幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3116|回复: 7

[通用编程] 求道題的意思

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-12-27 17:43:44 | 显示全部楼层 |阅读模式
這樣一個題,一群人圍在一起,然後數數 比如10個人,數到4的人退出,然後已退出的位置不再數,直到所有人退出
如10個人的編號是:1,2,3,4,5,6,7,8,9,10
   出來的次序是:4 , 8 , 2 , 7 , 3 , 10 , 9 , 1 , 6 , 5
  1. #include<stdio.h>
  2. main()
  3. {
  4.        int aa[255];
  5.        int i,j,k=1,m,n;
  6.        printf("please.....m n\n  ");
  7.        scanf("%d%d",&m,&n);
  8.        for (i=0;i<m;i++) aa[i]=i+1;  //輸入每人編號
  9.        for (i=0,j=1;j<=m;)
  10.        {
  11.              while (k<=n)
  12.              {
  13.                   i=(i+1)%m;
  14.                   if (aa[i]!=0) k++;
  15.               }
  16.              if (aa[i]==1) aa[i]=m+1;  //避免輸出最大位置變成0  --->這裡不懂是什麼意思?
  17.              printf("%6d",aa[i]-1);      // 輸出剛出位置的   ----> 這裡為什麼要減一呢?
  18.              aa[i]=0;
  19.              k=1;
  20.              j++;
  21.        }
  22. }
复制代码
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-12-27 21:21:21 | 显示全部楼层
对数学无爱。只想到了个用循环链表的方法,和上面提供的这种办法完全无缘。 [s:5]
え~え~お!!!
回复 支持 反对

使用道具 举报

50

主题

742

帖子

402

积分

版主

自定义头衔

Rank: 7Rank: 7Rank: 7

积分
402
发表于 2007-12-28 00:10:09 | 显示全部楼层
应该是注意把去掉的那个下一次不要算入里面阿?
Style-C
回复 支持 反对

使用道具 举报

79

主题

617

帖子

6150

积分

⑦老手

暗夜下可怜人

积分
6150
发表于 2007-12-28 10:19:36 | 显示全部楼层
  1. //因为顺序,所以当aa[i]== 1时,其上一位,一定数组尾部,利用m+1返回尾部, +1 的原因是下面有个aa[i]-1
  2. if (aa[i]==1) aa[i]=m+1;  //避免輸出最大位置變成0  --->這裡不懂是什麼意思?
  3. //因为aa[]比实际数字大1,例如aa[5] = 6
  4. printf("%6d",aa[i]-1);      // 輸出剛出位置的   ----> 這裡為什麼要減一呢?
  5. 另:算法蛮傻气的— —说着玩,别介意。
复制代码
希望破灭是因为发现真实,宁可背负罪孽也要维护爱我之人,永远的娜乌西卡!!!!!!
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-12-28 16:57:30 | 显示全部楼层
利用m+1返匚膊浚?+1  這裡剛好亂碼了   [s:5]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

79

主题

617

帖子

6150

积分

⑦老手

暗夜下可怜人

积分
6150
发表于 2007-12-28 17:53:28 | 显示全部楼层
引用第4楼august于2007-12-28 16:57发表的  :
利用m+1返匚膊浚?+1  這裡剛好亂碼了   [s:5]

利用m+1返回尾部, +1 的原因是下面有个aa-1
希望破灭是因为发现真实,宁可背负罪孽也要维护爱我之人,永远的娜乌西卡!!!!!!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

13

积分

②入门

积分
13
发表于 2008-2-5 21:55:24 | 显示全部楼层
用冒泡算法!!~~~
回复 支持 反对

使用道具 举报

2

主题

11

帖子

123

积分

③业余

积分
123
发表于 2008-2-10 17:03:09 | 显示全部楼层
看了半天总算看明白了~这个题我用pascal的时候做过~
我觉得好像每一部分都差着1,考虑起来蛮别扭的~如果舍去aa[0]呢?
直接用aa[1]到aa[m],让i即控制位置又控制下标~这样想起来方便一点
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-30 10:43 , Processed in 0.030086 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表