资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
.1_1问题描述:根据福利彩票的规则,6个蓝色球,X围1-32,不允许重复,1个红色球,X围1-16,自动生存6个蓝色球,1个红色球。importjava.util.Arrays; importjava.util.Random; importjava.util.Scanner;publicclass Ch11_2 /* * 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组 * param begin 最小数字(包含该数) * param end 最大数字(不包含该数) * param size 指定产生随机数的个数 * * 实现思路:首先定义一个方法,使它能够产生6个不重复的蓝色随机数,存放到数组中, * 再产生1个红色随机数,最后他们组合在一起就是题目所求 */publicstaticint generateRandomNumber(int begin, int end, int size) / 加入逻辑判断,确保begin= end | (end - begin) size) returnnull; / 种子你可以随意生成,但不能重复里面存放的是你的取值X围/本题就是 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32int seed = newintend - begin; for (int i = begin; i end; i +) seedi - begin = i; int ranArr = newintsize; Random ran = newRandom(); / 数量你可以自己定义。这里生成了6个蓝色球的for (int i = 0; i =lenB) templen=lenA-lenB;addB=maxlen(addB,templen);/调整长度,使其跟大数长度一致elsetemplen=lenB-lenA;addA=maxlen(addA,templen); charaddcharA=addA.toCharArray();charaddcharB=addB.toCharArray();intlen=addcharA.length;intvalueC=newintlen;for(int i=0;i=0;i-) if(valueCi=10) strvalue=String.valueOf(valueCi+tmp-10)+strvalue;tmp=valueCi/10;elsestrvalue=String.valueOf(valueCi+tmp)+strvalue;tmp=0; returnstrvalue; /调整长度,使其长度一样privatestatic String maxlen(String str,inttemplen) String strmax=null;StringBuffer buff=newStringBuffer();for(int i=0;itemplen;i+) buff.append(0); strmax=buff.toString()+str;returnstrmax; 1_3尾数前移问题描述:求一个自然数N,个位数是6,将6提到最前面得到的数是N的4倍publicclass Ch11_5 /* * 问题分析:1 假设这个数是n6(n是从1开始的正整数) * 2 满足关系 6n=4*(n6) * 3 n6=n * 10 + 6; 6n=6 * Math.pow(10,i) + n; i代表的是6处在的是十位还是百位等等 (十位 i=1.) * paramargs */publicstaticvoid main(String args) int n = 0;/代表6的前面部分,“n6”int N;/6移动前,即N=n6int M;/6移动到数字首部后,即M=6nintbuf;int i = 0;/代表数字的长度while(true)/穷举/移动前N = n * 10 + 6;buf = n;/计算数字的长度,确定6移到首部的权重,即:6代表的是十位还是百位等等while(buf!=0) i+;buf = buf/10; /移动后 M = (int)(6 * Math.pow(10,i) + n;/条件满足,输出,退出循环if(M = (4*N) System.out.print(要找的数为:+N);break; n+;/穷举变量修改 i = 0;/长度值复位1_4国际象棋有八行八列,64个单元格,在棋盘上摆放八个皇后,使其不能相互攻击,就是说任意两个皇后不能处在同一行,同一列或同一斜线上,问一共有多少中摆法importjava.util.Arrays;publicclass Ch11_6 staticintresult=0;staticint WeiZhi=newint8;/全局数组,下标代表行,里面的元素代表列(就是我们上算法分析的解向量)staticvoidEightQueen(int n)/ 算法inti,j;intct;/用于判断是否冲突,1代表不冲突if (n = 8)/若8个皇后已放置完成 System.out.println(Arrays.toString(WeiZhi);result+;return; for (i = 1; i = 8; i+)/试探 WeiZhin = i;/在该列的第i行上放置/断第n个皇后是否与前面皇后形成攻击ct=1;for (j = 0; j n; j+) if (WeiZhij = WeiZhin)/ 形成攻击 ct=0; elseif (Math.abs(WeiZhij - WeiZhin) = (n
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号