C++编程 n个小孩围一圈报数(1~3),数到3的出列,剩下的接着报数,最后的小孩获胜

书里给的程序代码 可是运行后感觉结果不对 大牛们看看错在哪 #include using namespace std; int main() { int a[50],k,n,m,i,*p; p=a; coutn; for(i=0;i
匿名用户    2009-09-28 22:26    

满意回答

给你个13人的,具体你自己可以改成n个,主要是思路,你要好好学习下 #include #define N 13 struct person{ int number; int next; }link; //定义一个person结构,结构昌报有两个佳典实属性,一个记录number,人代表的数字,一个代表next,最菜代表他的下一个和link的数组 void main(){ int i,count,h; for(i=1;i

匿名用户   2009-09-28 22:56
宝宝知道提示您:回答为网友贡献,仅供参考。

为您推荐:

其他回答

还是写代码容易一些,汗! #include using namespace std; const int NUM_KID = 101; const int KING = 3; void main() { int i, j = NUM_KID, k = 0, l = 1; int a; for (i... = 0; i < NUM_KID; i++) a = i + 1; while (j > 1) { //剩余人数大于1 if (a) { //未出列 if (l == KING) {//报到K出列 l = 1; a = 0; j--; } else { l++; //报数 } } if (++k == NUM_KID) k = 0; //循环 } while (a == 0); //找到KING cout

全部展开 收起
匿名用户    2009-09-28 23:33

我来回答

匿名用户    2009-09-28 22:57

这个就是约瑟夫问题,用循环链表来做很简单的,不知道你学了没 或者这样,这是百度百科的解法,你搜索约瑟夫问题 #include using namespace std; void main() { int n,m,a,k,i,j,num; //计数器是从1开始的,所以100个人用101 coutn; ...cout

全部展开 收起
匿名用户    2009-09-28 22:47

错误在你重新赋值i的时候赋值为了1 那么你的指针数组就从P开头的下一个元素开始报数 把i重新赋值时改为0,问题就解决了

匿名用户    2009-09-28 22:45
加载更多