敢死队问题

[复制链接]
查看11 | 回复1 | 2010-6-9 16:51:40 | 显示全部楼层 |阅读模式
有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。
排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。
要求:至少采用两种不同的数据结构的方法实现。如果采用三种以上的方法者,可加分。
要求:有详细注释
可以发邮箱[email protected]

回复

使用道具 举报

千问 | 2010-6-9 16:51:40 | 显示全部楼层
如果 排长是1号 一共有num个人int last(int num){
if(num==2)
return 2;
else if(num==3)
return 1;
else if(num==4)
return 4;
else
if(last(num-1)==1)
return num-4;
else if(last(num-1)>4)
return last(num-1)-4;
else
return num+last(num-1)-4;
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行