首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

约瑟夫程序//k=j放在循环第一条语句,为什么结果还对呀?解决方案

2012-05-03 
约瑟夫程序//kj放在循环第一条语句,为什么结果还对呀?!C/C++ code#includestdio.hint main(){int per[1

约瑟夫程序//k=j放在循环第一条语句,为什么结果还对呀?!

C/C++ code
#include<stdio.h>int main(){    int per[100]= {0};    int num=0,amo=0;    int i=0,remain=0,j=0;    printf("输入人数:");    scanf("%d",&amo);    printf("输入每次数几人:");    scanf("%d",&num);    remain=amo;    j=0;    int k=0;    while(remain)    {        for(i=0; i<num; i++)        {            k = j;            j=(j+1)%amo;            while( per[j]>0 )j=(j+1)%amo;        }        if( remain==1 )            printf("最后留下了%d\n", k+1);        else            printf("%d was killed.\n",k+1);        per[k] = 1;        remain--;    }    return 0;}


[解决办法]
探讨

为啥我写的也对呀?
引用:
while(remain)
{
for(i=0; i<num; i++)
{

j=(j+1)%amo;
while( per[j]>0 )j=(j+1)%amo;
}
k = j;
if( remain==1 )
printf("最后留下了%d\n", k);
else
printf("%d was killed.\n"……

热点排行