C语言编的约瑟夫问题(猴子选大王)求大神看哪里错了
#include<stdio.h>intmain(){intc;for(c=0;c<12332;c++){intsz[300],a,s,i,k,n,m,b;scanf("...
#include<stdio.h>
int main(){
int c;
for(c=0;c<12332;c++){
int sz[300],a,s,i,k,n,m,b;
scanf("%d %d",&n,&m);
if(n==0&&m==0){break;}
a=0,b=0,s=0;
for(i=0;i<n;i++){
sz[i]=1;}
for(k=0;k<n;k++){
if(sz[k]==1){
s=s+1;
if(s==m){
sz[k]=0,s=0,b=b+1;}}
if (k==n-1){
k=0;}
if (b==n-1){break;}
}
for(i=0;i<n;i++){
if(sz[i]==1){
printf("%d\n",i);}
}}
return 0;}
约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。
输出总是0,求大神啊 展开
int main(){
int c;
for(c=0;c<12332;c++){
int sz[300],a,s,i,k,n,m,b;
scanf("%d %d",&n,&m);
if(n==0&&m==0){break;}
a=0,b=0,s=0;
for(i=0;i<n;i++){
sz[i]=1;}
for(k=0;k<n;k++){
if(sz[k]==1){
s=s+1;
if(s==m){
sz[k]=0,s=0,b=b+1;}}
if (k==n-1){
k=0;}
if (b==n-1){break;}
}
for(i=0;i<n;i++){
if(sz[i]==1){
printf("%d\n",i);}
}}
return 0;}
约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。
输出总是0,求大神啊 展开
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询