人工智能作业--如何转动使得每个扇区数字和为12
2008-11-11 10:22
274 查看
这是我的实现代码:
/**
* @author 赵健 Nov 3, 2008 1:24:15 PM
*/
public class SumCircle {
public static void main(String[] args) {
// a其实是不用转的,固定它
int a[] = new int[] { 2, 5, 1, 5, 3, 4, 3, 2 };
int b[] = new int[] { 1, 3, 4, 5, 3, 5, 2, 2 };
int c[] = new int[] { 3, 2, 1, 3, 4, 2, 5, 1 };
int d[] = new int[] { 2, 3, 4, 1, 3, 4, 5, 3 };
int total = 0;
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < c.length; j++) {
for (int k = 0; k < d.length; k++) {
System.out.println("第" + i + j + k + "次(8进制)");
round(b, i);
round(c, j);
round(d, k);
print(a, b, c, d);
if (chk(a, b, c, d)) {
System.out.println(" 第"
+ (++total) + "次符合条件的结果=======>" + i + " , "
+ j + " , " + k);
}
}
}
}
}
// 测试是否符合条件所有的都=12,调用oneRound()
public static boolean chk(int a[], int b[], int c[], int d[]) {
boolean chk = true;
for (int i = 0; i < a.length; i++) {
if (!oneRound(a[i], b[i], c[i], d[i])) {
chk = false;
break;
}
}
return chk;
}
// 测试每次旋转是否符合条件=12
public static boolean oneRound(int aa, int bb, int cc, int dd) {
if ((aa + bb + cc + dd) == 12) {
return true;
} else {
return false;
}
}
// 根据指定的圈数旋转圆盘
public static void round(int ar[], int count) {
for (int i = 0; i < count; i++) {
for (int j = 0; j < ar.length - 1; j++) {
ar[j] = ar[j] ^ ar[j + 1];
ar[j + 1] = ar[j] ^ ar[j + 1];
ar[j] = ar[j] ^ ar[j + 1];
}
}
}
// 打印4个数组
public static void print(int a[], int b[], int c[], int d[]) {
int r[][] = new int[][] { a, b, c, d };
for (int i = 0; i < r.length; i++) {
for (int j = 0; j < r[i].length; j++) {
System.out.print(r[i][j] + " ");
}
System.out.println();
}
}
}
/**
* @author 赵健 Nov 3, 2008 1:24:15 PM
*/
public class SumCircle {
public static void main(String[] args) {
// a其实是不用转的,固定它
int a[] = new int[] { 2, 5, 1, 5, 3, 4, 3, 2 };
int b[] = new int[] { 1, 3, 4, 5, 3, 5, 2, 2 };
int c[] = new int[] { 3, 2, 1, 3, 4, 2, 5, 1 };
int d[] = new int[] { 2, 3, 4, 1, 3, 4, 5, 3 };
int total = 0;
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < c.length; j++) {
for (int k = 0; k < d.length; k++) {
System.out.println("第" + i + j + k + "次(8进制)");
round(b, i);
round(c, j);
round(d, k);
print(a, b, c, d);
if (chk(a, b, c, d)) {
System.out.println(" 第"
+ (++total) + "次符合条件的结果=======>" + i + " , "
+ j + " , " + k);
}
}
}
}
}
// 测试是否符合条件所有的都=12,调用oneRound()
public static boolean chk(int a[], int b[], int c[], int d[]) {
boolean chk = true;
for (int i = 0; i < a.length; i++) {
if (!oneRound(a[i], b[i], c[i], d[i])) {
chk = false;
break;
}
}
return chk;
}
// 测试每次旋转是否符合条件=12
public static boolean oneRound(int aa, int bb, int cc, int dd) {
if ((aa + bb + cc + dd) == 12) {
return true;
} else {
return false;
}
}
// 根据指定的圈数旋转圆盘
public static void round(int ar[], int count) {
for (int i = 0; i < count; i++) {
for (int j = 0; j < ar.length - 1; j++) {
ar[j] = ar[j] ^ ar[j + 1];
ar[j + 1] = ar[j] ^ ar[j + 1];
ar[j] = ar[j] ^ ar[j + 1];
}
}
}
// 打印4个数组
public static void print(int a[], int b[], int c[], int d[]) {
int r[][] = new int[][] { a, b, c, d };
for (int i = 0; i < r.length; i++) {
for (int j = 0; j < r[i].length; j++) {
System.out.print(r[i][j] + " ");
}
System.out.println();
}
}
}
相关文章推荐
- 12.输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 一个只由字母数字字符和破折号组成的字符串S. 该字符串被N个破折号分成N + 1个组。 给定数字K,使得每个组包含完全K个字符,除了第一个组可能少于K
- 在高并发的情况下,Node.js怎么生成像陌陌里面每个用户都有的 数字账号 呢,如何才会不重复呢?
- 那些开12+的大哥们,有没有不知道 如何给数字前面补0,如何用逗号把一个Liststring连接起来变成一个string,如何单纯的给Liststring连接起
- 对于一个n位正整数a,去掉其中任意k(k<=n)个数字后,剩下的数字按原次序排列可以组成一个新的正整数。设计一个删数算法,使得剩下的数字组成的正整数最小。例如,a=13243221,k=5,输出:12
- 12. 微软面试题:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字
- 用123456789组成三个三位数,每个数字只能用一次,使得第二个数是第一个数的两倍,第三个数是第一个数的三倍
- 如何使用.net读取PKCS12格式数字证书
- 小明买了一些彩色的气球用绳子串在一条线上,想要装饰房间,每个气球都染上了一种颜色,每个气球的形状都是各不相同的。我们用1到9一共9个数字表示不同的颜色,如12345则表示一串5个颜色各不相同的气球串。但小明希望得到不出现重复颜色的气球串,那么现在小明需要将这个气球串剪成多个较短的气球串,小明一共有多少种剪法?如原气球串12345的一种是剪法是剪成12和345两个气球串。
- 天耀18期 - 12.数据结构-1-2.LinkedList【作业】-猜数字.doc
- 假设有一颗二叉树,已知这棵树的节点上不均匀的分布了若干石头,石头数跟这棵二叉树的节点数相同,石头只可以在子节点和父节点之间进行搬运,每次只能搬运一颗石头。请问如何以最少的步骤将石头搬运均匀,使得每个节
- 假设有一颗二叉树,已知这棵树的节点上不均匀的分布了若干石头,石头数跟这棵二叉树的节点数相同,石头只可以在子节点和父节点之间进行搬运,每次只能搬运一颗石头。请问如何以最少的步骤将石头搬运均匀,使得每个节
- 将1,2,3,4,5,6,7,8,9九个数字分成以下三种形式之一,每个数字只能用一次,使得该分数刚好为一个整数
- java中如何使用BigDecimal使得Double类型保留两位有效数字
- 输入数字如何获取
- 从屏幕输入一行数字,以空格分隔,如何分别存放到数组中
- Excel表格文本格式的数字和数字格式如何批量转换
- 如何读入包括字符的一串数字
- 如何用Pr完成作业~
- 如何为我们snap包里的每个应用生产相应的desktop文件