返回列表 发帖

帮我用C编个程序

终于发现这个题目以前叫做<幸运的基督徒>,是一个数学家出的题 标准的好象是这样的 struct node { int no_out; //是否被仍入海中 int nextp; //下一个元素 } 程序代码 #include struct node { int no_out; int nextp; }link[31]; main() { int i,j,k; printf("圈中有(+:非基督徒, @:基督徒):\n"); for(i=1;i<=30;i++) { link.nextp=i+1; link.no_out=1; } link[30].nextp=1; j=30; for(i=0;i<15;i++) { for(k=0;;) if(k<9) { j=link[j].nextp; k+=link[j].no_out; } else break; link[j].no_out=0; } for(i=1;i<=30;i++) printf("%c",link.no_out?'@':'+'); //@表示基督徒,+表示非基督徒. printf("\n"); }

TOP

帮我用C编个程序

楼上的比我的好多了,我看我就不必献丑了。

TOP

帮我用C编个程序

我是初学者
不是很懂呀

TOP

帮我用C编个程序

现在因该不要了吧

TOP

帮我用C编个程序

呵呵
用了联接表啊!
3Q

TOP

帮我用C编个程序

比较简单~~
就是不会~~~~~~

TOP

帮我用C编个程序

#include void main() { int findnext(int per[],int lastdie); int i,lastdie,nowdie; int per[30]; for(i=0;i<30;i++) per=1; per[8]=0; //第一个跳 lastdie=8; for(i=0;i<14;i++) //还有14个要跳 { nowdie=findnext(per,lastdie);//找出下一个要跳的人的编号 per[nowdie]=0; lastdie=nowdie; } printf("\n"); for(i=0;i<30;i++) if(per==1) printf("%3d",i+1); } int findnext(int per[],int lastdie) { int i=0; int num=lastdie; while(i<=9) { num++; if(num==30) num=0; // num=(num+1)%30; if(per[num]==1) i++; if((i==9)&&(per[num]==1)) break; } return num; } 先将30个人编号,1到30,程序输出最后没有跳下去的人的编号。

TOP

返回列表 回复 发帖