| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 764 人关注过本帖
标题:[讨论]评价一下这个算法啊
只看楼主 加入收藏
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
 问题点数:0 回复次数:5 
[讨论]评价一下这个算法啊
10个人围成一个圈,从第1个人开始数,数到第6个人,该第6个人出圈,然后从下一个人开始继续数到6出圈,循环出圈直到剩下最后一个人为胜者。
#include "stdio.h"
void main()
{
char n[50][50];
int m,j,i,k,l,h;
printf("请输入参加游戏的人数:");
scanf("%d",&m);
for(i=0;i<m;i++)
{
fflush(stdin);
printf("\n第%d个人的姓名:",i+1);
gets(n[i]);
}
printf("\n请输入出圈基数(即数到第几个人出圈):");
scanf("%d",&j);
h=j;
for(i=1,k=m;i<m;i++,h+=j)
{
h=(h-1)%(k-i+1);
printf("第%d个出圈的是:%s\n",i,n[h]);
for(l=h;l<m;l++)
{
n[l]=n[l+1];
}
}
printf("\n最后剩下的是:%s\n",n[0]);
}
搜索更多相关主题的帖子: 算法 评价 
2006-09-19 17:07
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
怎么没人顶啊 我自己来

2006-09-20 17:11
北海舰队
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-9-19
收藏
得分:0 
ok

教官说过:祖国不会忘记你们. 为了祖国即便死在明天的战场上也无怨无悔. -- 北海 fly
2006-09-20 19:09
看月亮22
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-9-20
收藏
得分:0 

我顶,我有个思路,望指点.
main()
{
int a[10]={8,8,8,8,8,8,8,8,8,8};
int k,i,c=10,n;
for(n=0; ;n++) /*假定N为10*/
{
if(a[n]==8)
k=k+1; /*记数器增加*/


if(k==6) /*是否为第六次*/
{
a[n]=0;

k=0; /*重新从1报号*/
c=c-1; /*记数器减小*/

if(c==1) break; /*剩下的数是否小于一*/
}

}


printf("%d\n",n);

getch();
}

2006-09-20 22:27
看月亮22
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-9-20
收藏
得分:0 

这是个思路,结果运行不对.望能完善一下.谢谢,很想接教你这个朋友 QQ 262437227 我已经加你QQ了,请按确定

2006-09-20 22:39
小小贝
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-9-21
收藏
得分:0 
我只算了10个人的情况...
看下对吧?
#include <stdio.h>
void main()
{
int i,m=0,count=0;
int sz[200];
for (i=0;i<200;i++)
sz[i]=8;
for (i=0;i<200;i++)
{
if(sz[i]==0)
{
count--;
}
count++;
if(count==6)
{
for(m=0;m<=14;m++)
sz[i%10+10*m]=0;
count=0;
if(sz[i]!=0&&sz[i]==sz[i+10])
break;
}

}
for(i=0;i<10;i++)
{
if (sz[i]!=0)
printf("最后剩下的是%d号",i+1) ;
}
}
2006-09-22 16:35
快速回复:[讨论]评价一下这个算法啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014711 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved