俺们坛里什么都有,就是搜不到数学型的问题,俺有个问题请教大家用js编出来! TO:yonghengdizhen(孤鹰) 每循环一次,又变了,怎么办,头都想大了,请讲清楚点,我发现循环一次我就要抽根烟,不知道怎么搞的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 临时写的,献丑了,请看看<script>function run(m,n){var arr=new Array(m)var i=-1;for(k=0;k<arr.length-1;k++){for(j=0;j<n;j++){do{if(++i>=arr.length)i=0;}while(arr[i]!=null);}arr[i]="qiushuiwuhen"}do{if(++i>=arr.length)i=0;}while(arr[i]!=null);return i+1;}for(l=2;l<=100;l++)document.write("<br>总共"+l+"个人玩这个游戏,最后剩下的是第"+run(l,3)+"个人");</script> <script> var m=13,n=3; var s=new Array(m); var i=0,j=0,k=-1; for(i=0;i<m;i++) s[i]=1; i=0; while(1){ k++; if (k>m-1) k=0; if (s[k]){ i++; if ((i % n)==0){ s[k]=0; j++; if (j==m-1) break; } } } for(i=0;i<m;i++) {if (s[i]) document.write('最后是第'+(i+1)+'个人没有出列')}; </script> //其实这是约瑟夫环问题,现在其实有很多方法解决它,不过Javascript不支持指针,所以不能用链表来做//如果用C,还可以用递归来实现//刚才我上面贴了用数组实现的方法,下面给出详细注释<script> var m=13,n=3; //m是参与的人数,n是报的那个数字 var s=new Array(m); //s用来标志所有的参与者的状态 var order=new Array(m); //order用来保存所有人的出列次序 var i=0,j=0,k=-1; //初始化所有参与人员,因为刚开始游戏,所有人的状态都为1。 // 1.在列 // 0.已出列 for(i=0;i<m;i++) s[i]=1; i=0; while(1){ k++; if (k>m-1) k=0; //如果报数到了最后一个人,就跳到第一个人报数 if (s[k]){ //只有在列的人才能报数,不考虑已出列的人 i++; //开始报数 if ((i % n)==0){ //如果报数的数字为3 s[k]=0; //让他出列 order[j]=k+1; //把出列人号码保存下来 j++; //出列的人数增加1 if (j==m-1) break; //如果已经有m-1个人出列了,那么跳出循环 } } } //打印那个没有出列的人for(i=0;i<m;i++) {if (s[i]) document.write('最后是第'+(i+1)+'个人没有出列<br>出列次序为:')}; for(j=0;j<m-1;j++) document.write(order[j]+',');document.write(i);</script> 更正:最后打印结果的时候出了点小错误://打印那个没有出列的人for(i=0;i<m;i++){ if (s[i]){ document.write('最后是第'+(++i)+'个人没有出列<br>出列次序为:') break; }}//打印出列顺序for(j=0;j<m-1;j++) document.write(order[j]+',');document.write(i); <script language=javascript>function getthelastone(n){if (n<3) //如果人数小于3{alert(n+"个人的话,最后一个是第"+n);return}a=2;for (var i=3;i<=n;i++) //以下两句为数列的递推公式{a=(a+3)%i; if (a==0) a=i;}alert((i-1)+"个人的话,最后一个是第"+a);}getthelastone(13)</script> <script language=javascript>function getthelastone(n){if (n<3) return n;a=2;for (var i=3;i<=n;i++) //以下两句为数列的递推公式{a=(a+3)%i; if (a==0) a=i;}return a;}alert(getthelastone(5));</script> //再来一个function f(m,n){a=1;for (var i=2;i<=m;i++){a=(a+n%i)%i;if (a==0) a=i;}alert(m+"个人,数"+n+"的人出局,最后一个人是第"+a+"个人。");}f(100000,10); 为什么结果是是undefined,其它两个变量都正常,请教 这段代码提示“未结束的字符串常量”,求高手指点 关于"+","-","*","/","%"字符串分解 在一个“JS/Query”函数中重新加载所在的“aspx页面” JSP页面调用java 江湖救急! 简单的JS问题 这么简单的js怎么不对呢??? 怎么避免减号 关于 同时刷新2个frame的问题 在超链接时,如何控制窗口的大小,且没有工具条,状态条。 如何根据字符串中的内容返回对象? VBScript中FormatNumber(expression ,0,-1)是什么功能?用java怎么替换?
function run(m,n){
var arr=new Array(m)
var i=-1;
for(k=0;k<arr.length-1;k++){
for(j=0;j<n;j++){
do{
if(++i>=arr.length)i=0;
}while(arr[i]!=null);
}
arr[i]="qiushuiwuhen"
}
do{
if(++i>=arr.length)i=0;
}while(arr[i]!=null);
return i+1;
}
for(l=2;l<=100;l++)document.write("<br>总共"+l+"个人玩这个游戏,最后剩下的是第"+run(l,3)+"个人");
</script>
var m=13,n=3;
var s=new Array(m);
var i=0,j=0,k=-1;
for(i=0;i<m;i++) s[i]=1;
i=0;
while(1){
k++;
if (k>m-1) k=0;
if (s[k]){
i++;
if ((i % n)==0){
s[k]=0;
j++;
if (j==m-1) break;
}
}
}
for(i=0;i<m;i++) {if (s[i]) document.write('最后是第'+(i+1)+'个人没有出列')};
</script>
//如果用C,还可以用递归来实现
//刚才我上面贴了用数组实现的方法,下面给出详细注释<script>
var m=13,n=3; //m是参与的人数,n是报的那个数字
var s=new Array(m); //s用来标志所有的参与者的状态
var order=new Array(m); //order用来保存所有人的出列次序
var i=0,j=0,k=-1;
//初始化所有参与人员,因为刚开始游戏,所有人的状态都为1。
// 1.在列
// 0.已出列
for(i=0;i<m;i++) s[i]=1;
i=0;
while(1){
k++;
if (k>m-1) k=0; //如果报数到了最后一个人,就跳到第一个人报数
if (s[k]){ //只有在列的人才能报数,不考虑已出列的人
i++; //开始报数
if ((i % n)==0){ //如果报数的数字为3
s[k]=0; //让他出列
order[j]=k+1; //把出列人号码保存下来
j++; //出列的人数增加1
if (j==m-1) break; //如果已经有m-1个人出列了,那么跳出循环
}
}
}
//打印那个没有出列的人
for(i=0;i<m;i++) {if (s[i]) document.write('最后是第'+(i+1)+'个人没有出列<br>出列次序为:')};
for(j=0;j<m-1;j++) document.write(order[j]+',');document.write(i);
</script>
//打印那个没有出列的人
for(i=0;i<m;i++){
if (s[i]){
document.write('最后是第'+(++i)+'个人没有出列<br>出列次序为:')
break;
}
}
//打印出列顺序
for(j=0;j<m-1;j++) document.write(order[j]+',');document.write(i);
function getthelastone(n)
{
if (n<3) //如果人数小于3
{
alert(n+"个人的话,最后一个是第"+n);
return
}
a=2;
for (var i=3;i<=n;i++) //以下两句为数列的递推公式
{
a=(a+3)%i;
if (a==0) a=i;
}
alert((i-1)+"个人的话,最后一个是第"+a);
}
getthelastone(13)</script>
function getthelastone(n)
{
if (n<3) return n;
a=2;
for (var i=3;i<=n;i++) //以下两句为数列的递推公式
{
a=(a+3)%i;
if (a==0) a=i;
}
return a;
}
alert(getthelastone(5));
</script>
{
a=1;
for (var i=2;i<=m;i++)
{
a=(a+n%i)%i;
if (a==0) a=i;
}
alert(m+"个人,数"+n+"的人出局,最后一个人是第"+a+"个人。");
}f(100000,10);