题目一:有一个班采用民主投票方法推选班长,班长候选人共4位,每个人代号分别为1、2、3、4,每名同学填写一张选票,写上同意作为班长的候选人的代号。编写程序,输入每张选票所填的候选人代号,统计每一位候选人所得到的选票数,输出统计结果及最终哪位候选人当选,数字0作为输入终止标识,0、1、2、3、4以外的输入都属于无效选票。求获得选票最多的候选人功能要求用自定义方法实现。
题目二有一群人被困在了一个小岛上,他们只有一个竹排可以逃生,竹排只能坐一个人,于是他们决定通过玩退圈游戏来决定那个人可以坐上竹排逃生。这些人围成了一个圆圈,从1开始每个人顺序编号,他们商定了一个不幸的数字 unlunckyNumber,然后从编号为1的人开始报数,报到unlunckyNumber的倍数就退出游戏,直到最后剩下一个人,这个人就是可以得到竹排的人。编写程序,在main方法中输入玩游戏的人数和不幸的数字unlunckyNumber,自定义Pay方法按游戏规则进行游戏,方法返回赢的人编号。
题目二有一群人被困在了一个小岛上,他们只有一个竹排可以逃生,竹排只能坐一个人,于是他们决定通过玩退圈游戏来决定那个人可以坐上竹排逃生。这些人围成了一个圆圈,从1开始每个人顺序编号,他们商定了一个不幸的数字 unlunckyNumber,然后从编号为1的人开始报数,报到unlunckyNumber的倍数就退出游戏,直到最后剩下一个人,这个人就是可以得到竹排的人。编写程序,在main方法中输入玩游戏的人数和不幸的数字unlunckyNumber,自定义Pay方法按游戏规则进行游戏,方法返回赢的人编号。
解决方案 »
- C# 新手做了 一个小实验 稍微改写一下,求高手指导下~万分感谢~~
- 急!急!MAF 在激活插件时CPU使用率100%
- 正则表达式中“且”关系如果表达
- 如何用C#删除掉ftp服务器上的目录?
- 关于在数据实体类和DataTable间使用反射进行数据转换
- unicode能否转换汉字?
- 求通过用户名和密码的通用SQL SERVER连接字符串(ASP。NET和C#)
- 菜鸟有个字符串:2005-02-22 12:12:12,如何从这个字符串分解出,年月日,时分秒呢??
- 跪求ASP.NET与C#从入门到精通,电子书?
- 请问winform有没有事件队列?
- media sdk 编程问题?
- C# 生成的windows应用程序使用了timer,最小化到托盘后,关机时必须先结束这个程序才能关机。
string GetWinner(string numbers)
{
int len=numbers.Length;
int max=0;
string result=string.Empty;
for(int i=1;i<=4;i++)
{
numbers=numbers.Replace(i.ToString(),"");
int temp=len-numbers.Length;
len-=temp;
if(temp>max)
{
max=temp;
result=i.ToString();
}
}
return result;
}
{
ArrayList list=new ArrayList();
for(int i=1;i<=count;i++)//游戏者从1到count进行编号
list.Add(i);
int unlunckyPos=(unlunckyNumber-1)%list.Count;
while(list.Count>1)
{
list.Remove(list[unlunckyPos]);//下标为unlunckyPos者出局
unlunckyPos=(unlunckyPos+unlunckyNumber-1)%list.Count;
}
return list[0].ToString();
}
也许用递推更好,不过递归思路似乎更清晰一些!
static void Main(string[] args)
{
//人数
int amount = 4;
//编号长度
int unlunckyNumber = 4; //程序中的编号从0开始,所以+1,变为从1开始
int lastOne = solve(amount, unlunckyNumber) + 1;
} static int solve(int amount, int unlunckyNumber)
{
//如果只剩下1个人,那么编号是0,(编号从0开始是为了取%比较方便)
if (amount == 0)
return 1; //转化为amount-1人的问题,剩下的人编号+unlunckyNumber
return (solve(amount - 1, unlunckyNumber) + unlunckyNumber) % amount;
}