题解3:蛇形方阵、珠心算测验
蛇形方阵
题目:
题解:
import java.util.Scanner;
public class Main08281 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();//扫描框内的数字n
int[][] arr = new int[n][n];//定义二维数组,用来存放二维数据(前为行,后为列)
int num = 1;//控制第一个数字为1
int left = 0, right = n - 1, up = 0, down = n - 1;//初始值为0,每行每列都有n个数,最后为n-1
//一定要加while循环,不然只能执行一轮!
while (num <= n * n) {
//从左向右
for (int i = left; i <= right; i++) {
arr[up][i] = num++;
//遍历数组,表示行不变,列改变。列递增后num值逐渐加1。
}
up++;//上边的行要逐渐加1
//从上到下
for (int i = up; i <= down; i++) {
arr[i][right] = num++;
//遍历数组,表示列不变,行改变。列递增后num值逐渐加1。
}
right--;//右边的列要逐渐减1
//从右到左
for (int i = right; i >= left; i--) {
arr[down][i] = num++;
}
down--;
//从下到上
for (int i = down; i >= up; i--) {
arr[i][left] = num++;
}
left++;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
//保留3位字符,右对齐
System.out.printf("%3d", arr[i][j]);
}
System.out.println();
}
}
}
珠心算测验

题解
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//程序主入口
Scanner sc = new Scanner(System.in);//创建Scanner对象,接收键盘输入
int n = sc.nextInt();//读取第一个整数n,表示一共有多少个数字
int[] a = new int[n];//定义数组a,长度为n,用来存放n个数字
boolean[] flag = new boolean[n];//布尔标记数组flag,标记对应下标是否满足条件,初始值为false
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();//读取输入数字,赋值给数组的相应位置
}
//使用枚举法,查找符合条件的元素
//j取第一个数的下标,遍历每一个元素
for (int j = 0; j < n; j++) {
//k取j后一个下标,保证两数不重复
for (int k = j + 1; k < n; k++) {
//取出a[j]和a[k]两数相加,得到sum
int sum = a[j] + a[k];
for (int i = 0; i < n; i++) {
//判断sum是否等于数组中的一个元素
//如果满足条件,flag对应下标标记为true
if (a[i] == sum) {
flag[i] = true;
}
}
}
}
//设置一个计数器,初始值为0,统计满足条件的数字总个数
int count = 0;
//遍历数组
for (int i = 0; i < n; i++) {
//如果flag[i]等于true,代表该数满足条件
if (flag[i]) {
count++;//计数器+1
}
//注意:最后的打印语句不要放到此处,这是for循环的里面,会将每一轮的结果打印出来
}
System.out.println(count);//打印最终统计得到的数据
}
}

1044

被折叠的 条评论
为什么被折叠?



