一年多没接触java了,现在有5个题目望各位网友指点一二,不用给出答案。
1、随机生成一个长度为100的数组,里面数值的范围为[1-10],找出出现次数最多和出现次数最少的数值。2、约瑟夫环的问题。有M个人围成一个圈,他们每个人都有自己的编号(...
1、随机生成一个长度为100的数组,里面数值的范围为[1-10],找出 出现次数最多和出现次数最少的数值。
2、约瑟夫环的问题。有M个人围成一个圈,他们每个人都有自己的编号(1-M),指定一个编号开始查数,查到N就把该人踢出圈子,继续从1开始查数,重复该操作,知道剩下一个人为止,问最后剩下的人的编号是多少。
3、汉诺塔问题。有三根柱子A、B、C ,A上有N个大小不同的铁皮,从小到大叠放在A柱子上,现在希望把他们挪到C柱子上,借助于B柱子,铁片只能放在柱子上,而且大的铁片不能叠在小的上面,请输出挪步的步骤。
4、骰子问题。有三个骰子,它们有下面几种类型,从大到小依次是:豹子(三个骰子点数一样)、顺子(三个骰子点数连续)、对子(有两个骰子点数一样)、普通(三个骰子不连接且各不相同),同类型比总点数。有两人在玩这个游戏,它们玩了100次,请模拟这些操作,并算出各自的胜率。
5、大富翁游戏问题。阿土伯和孙小美各20个金币,从同一格子出发站在一条有20个格子的环形道路上,它们分别摇骰子前进,摇到多少就做多少步,每停留一个位置就占领这个位置并为该位置升级level,每次升级消耗1个金币,每次站在对方的位置都会消耗1 * level 个金币,阿土伯有30%的机会不给金币,孙小美有5%的机会掠夺对方土地,每次相遇都会彼此损失一个金币,金币低于0就算输。模拟整个游戏,看谁胜利。
想了2天了,连第一个题都没做出来,哎╮(╯▽╰)╭。 展开
2、约瑟夫环的问题。有M个人围成一个圈,他们每个人都有自己的编号(1-M),指定一个编号开始查数,查到N就把该人踢出圈子,继续从1开始查数,重复该操作,知道剩下一个人为止,问最后剩下的人的编号是多少。
3、汉诺塔问题。有三根柱子A、B、C ,A上有N个大小不同的铁皮,从小到大叠放在A柱子上,现在希望把他们挪到C柱子上,借助于B柱子,铁片只能放在柱子上,而且大的铁片不能叠在小的上面,请输出挪步的步骤。
4、骰子问题。有三个骰子,它们有下面几种类型,从大到小依次是:豹子(三个骰子点数一样)、顺子(三个骰子点数连续)、对子(有两个骰子点数一样)、普通(三个骰子不连接且各不相同),同类型比总点数。有两人在玩这个游戏,它们玩了100次,请模拟这些操作,并算出各自的胜率。
5、大富翁游戏问题。阿土伯和孙小美各20个金币,从同一格子出发站在一条有20个格子的环形道路上,它们分别摇骰子前进,摇到多少就做多少步,每停留一个位置就占领这个位置并为该位置升级level,每次升级消耗1个金币,每次站在对方的位置都会消耗1 * level 个金币,阿土伯有30%的机会不给金币,孙小美有5%的机会掠夺对方土地,每次相遇都会彼此损失一个金币,金币低于0就算输。模拟整个游戏,看谁胜利。
想了2天了,连第一个题都没做出来,哎╮(╯▽╰)╭。 展开
展开全部
我只说第一题。
1.申请长度为100的数组
int[] array=new int[100];
2.循环生成100个随机数
for(int i=0;i<100;i++){
array[i]=Math.randon()*10+1;
}
3.申请一个长度为10的int数组,用来存放1-10每个数字出现的次数,下表0-9分别对应数字1-10
int[] a=new int[10];
初始化都为0;
4.开始遍历数组,统计1-10每个数字出现的次数
for(int i=0;i<array.length;i++){
a[array-1]++;
}
5.遍历数组a,找到最小值和最大值
int min=0;//最小值
int max=0;//最大值
for(int i=0;i<a.length;i++){
if(a[i]<min){
min=a[i]
}
if(a[i]>max){
max=a[i];
}
}
6.最后输出
System.out.println("出现次数最多的是:"+(max+1)+" ;出现次数最少的是:"+(min+1));
要学会把问题分解了,然后一步一步去找你要的东西。
1.申请长度为100的数组
int[] array=new int[100];
2.循环生成100个随机数
for(int i=0;i<100;i++){
array[i]=Math.randon()*10+1;
}
3.申请一个长度为10的int数组,用来存放1-10每个数字出现的次数,下表0-9分别对应数字1-10
int[] a=new int[10];
初始化都为0;
4.开始遍历数组,统计1-10每个数字出现的次数
for(int i=0;i<array.length;i++){
a[array-1]++;
}
5.遍历数组a,找到最小值和最大值
int min=0;//最小值
int max=0;//最大值
for(int i=0;i<a.length;i++){
if(a[i]<min){
min=a[i]
}
if(a[i]>max){
max=a[i];
}
}
6.最后输出
System.out.println("出现次数最多的是:"+(max+1)+" ;出现次数最少的是:"+(min+1));
要学会把问题分解了,然后一步一步去找你要的东西。
更多追问追答
追问
恩,谢谢你。
追答
把大问题分解了,每一步就更容易在网上搜到了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询