Loving Coding & Visual Design
一道微软面试题
CU上面有这样一道微软面试题:
据说这是约瑟夫问题(Josephus' Problem),约瑟夫问题又是循环链表应用的典型例子。在苏格兰数学家Peter Guthrie Tait给出这个问题的通解后,又被称为Tait's Problem。
这是解决办法:
我用PHP试了一下,但是没有上面的简介,汗!
[code lang="php"]
$arr=array();
for($i=1;$i<=2000;$i++){
$arr[]=$i;
}
echo "
圆圈上顺时针排列着1,2,3,....2000 这2000个数. 从1开始,顺时针隔一个拿走一个(1最先被拿走,下一个是3被拿走). 问最后剩下是哪一个数字.
据说这是约瑟夫问题(Josephus' Problem),约瑟夫问题又是循环链表应用的典型例子。在苏格兰数学家Peter Guthrie Tait给出这个问题的通解后,又被称为Tait's Problem。
这是解决办法:
(2000循环左移1)-1=1952 2000:
11111010000 2000循环左移1:
11110100001 2000循环左移1-1:
11110100000=1952
我用PHP试了一下,但是没有上面的简介,汗!
[code lang="php"]
$arr=array();
for($i=1;$i<=2000;$i++){
$arr[]=$i;
}
echo "
";
$tmp_arr=array();
$is_f=0;
$tmp_arr=$arr;
while(count($tmp_arr)>1){
for($i=0,$mx=count($arr);$i<$mx;$i++){
$item=$arr[$i];
if($item!=""){
if($is_f==1){
$is_f=0;
}else{
$arr[$i]="";
$is_f=1;
}
}
}
$tmp_arr=array_filter($arr, "myempty");
}
print_r($tmp_arr);
function myempty($var){
return ($var!= "");
}
[/code]
最 近 文 章
- Symfony - 基于PHP5的开源框架 - Tue, 20 Nov 2007 13:28:40 +0000
- 测试自己是左脑还是右脑型的人 - Wed, 24 Oct 2007 08:35:12 +0000
- 变得沉默了 - Sat, 20 Oct 2007 03:13:34 +0000
- 杭州、绍兴游 - Tue, 09 Oct 2007 05:22:34 +0000
- Windows下面php5找不到php_curl.dll的问题 - Thu, 27 Sep 2007 02:30:07 +0000
- Js Err: 'button[].type' is null or not an object - Fri, 14 Sep 2007 10:19:36 +0000
- 为Discuz增加关键字过滤的功能 - Thu, 13 Sep 2007 13:00:31 +0000
- CSS:IE下非链接HOVER的解决办法 - Wed, 12 Sep 2007 08:50:52 +0000
- 感受FLASH CS3 - Fri, 31 Aug 2007 14:19:13 +0000
- 关于mysql_real_escape_string - Thu, 23 Aug 2007 10:58:56 +0000