输入一个矩阵,按照从外到里以顺时针的顺序依次打印出每一个数字
public class Test1 {
public static void main(String[] args) {
int[][] array = input();
output(array,0,array.length-1);
}
public static int[][] input(){
int[][] array = new int[4][4];
int num = 0;
for (int i = 0; i < array.length; i++) {
int[] row = array[i];
for (int j = 0; j < row.length;j++) {
array[i][j] = ++num;
}
}
return array;
}
public static void output(int[][] num,int start,int end){
if (start>end) {
return;
}
for (int i = start; i <= end; i++) {
System.out.print(num[start][i]+" ");
}
for (int i = start+1; i <= end; i++) {
System.out.print(num[i][end]+" ");
}
for (int i = end-1; i >=start; i--) {
System.out.print(num[end][i]+" ");
}
for (int i = end-1; i >start; i--) {
System.out.print(num[i][start]+" ");
}
output(num,start+1,end-1);
}
}
给出一个排序好的数组和一个数,求数组中连续元素的和等于所给数的子数组
public class Test2 {
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7,8,9};
int sum = 11;
findSum(array,sum,0);
}
public static void findSum(int[] array, int sum,int start){
if (start>=array.length-1) {
return;
}
int sum1 = 0;
for (int i = start; i < array.length; i++) {
sum1 = sum1+array[i];
if (sum1==sum) {
bianLi(array,start,i);
findSum(array,sum,start+1);
return;
}
}
findSum(array,sum,start+1);
}
public static void bianLi(int[] array,int start,int end){
if (start>end || start>array.length-1 || end>array.length-1) {
return;
}
for (int i = start; i <= end; i++) {
System.out.print(array[i]+" ");
}
System.out.println();
}
}