1. 二維數(shù)組的處理
- 使用輸入值初始化數(shù)組
//1.使用輸入值初始化數(shù)組
public void initArray(int array[][]){
Scanner input=new Scanner(System.in);
for(int row=0;row<array.length;row++){
for(int colum=0;colum<array[row].length;colum++){
array[row][colum]=input.nextInt();
}
}
}
- 數(shù)組按列求和
//2.數(shù)組按列求和
public static void sumbycolum(int array[][]){
for(int colum=0;colum<array[0].length;colum++) {
int total = 0;
for(int row=0;row<array.length;row++){
total=total+array[row][colum];
}
System.out.println("第"+(colum+1)+"列的和為"+total);
}
}
- 哪一行的和最大
//3.哪一行的和最大
public static void maxRow(int array[][]){
int maxrow=0;
int indexOfMaxRow=0;
for(int colum=0;colum<array[0].length;colum++)
maxrow=maxrow+array[0][colum];
for(int row=1;row<array.length;row++){
int totalOfthisRow=0;
for(int colum=0;colum<array[row].length;colum++){
totalOfthisRow=totalOfthisRow+array[row][colum];
if(totalOfthisRow>maxrow){
maxrow=totalOfthisRow;
indexOfMaxRow=row;
}
}
}
System.out.print("Row "+(indexOfMaxRow+1)+" has the max sum of "+maxrow);
}
2. 示例學(xué)習(xí)
- 找出距離最近的點(diǎn)對
public class text2_距離最近的點(diǎn)對 {
public static void main(String[] args){
System.out.println("輸入有幾個點(diǎn):");
Scanner input=new Scanner(System.in);
int row=input.nextInt();
double [][]array=new double[row][2];
System.out.println("輸入所有點(diǎn)的x污朽,y坐標(biāo):");
for(int i=0;i<row;i++) {
array[i][0]=input.nextDouble();
array[i][1]=input.nextDouble();
}
//定義變量p1产场,p2表示距離最近的點(diǎn)所在的行
int p1=0,p2=1;
double shortDistance=distance(array[p1][0],array[p1][1],array[p2][0],array[p2][1]);
//從0開始律杠,每一個和后面其余所有行求距離
for(int i=0;i<array.length-1;i++)
{
for(int j=i+1;j<array.length;j++)
{
double distance=distance(array[i][0],array[i][1],array[j][0],array[j][1]);
if(distance<shortDistance)
{
p1=i;
p2=j;
shortDistance=distance;
}
}
}
System.out.println("最短的兩點(diǎn)是("+array[p1][0]+","+array[p1][1]+")("+array[p2][0]+","+array[p2][1]+")"+"\n最短的距離為:"+shortDistance);
}
private static double distance(double x1, double y1, double x2, double y2) {
return Math.sqrt(Math.pow((x2-x1),2)+Math.pow((y2-y1),2));
}
}
-
數(shù)獨(dú)
數(shù)獨(dú)是一個 9 x 9 的網(wǎng)格 柏靶, 它被分為更小的 3 x 3 的盒子 ( 也稱為區(qū)域或者塊 ) , 如圖
8 - 4 a 所示 怨酝。 將從 1 到 9 的數(shù)字植人一些稱為固定方格 ( fixed cell ) 的格子里 。 該程序的目標(biāo)是將從 1 到 9 的數(shù)字植人那些稱為自由方格 ( free cell ) 的格子 费薄, 以便能夠使得每行每列以及每個 3 x 3 的盒子都包含從 1 到 9 的數(shù)字 。一旦找到一個數(shù)獨(dú)難題的解決方案 栖雾, 如何驗(yàn)證它是正確的呢楞抡?
檢査每個單元格 。 每個單元格必須是 1 到 9 的數(shù)字 析藕, 單元格數(shù)字在每行 召廷、 每列 , 以及
每個小方盒中都是唯一的 账胧。
public class text3_數(shù)獨(dú) {
public static void main(String[] args){
int [][]grid=readASolution();
System.out.println(isValid(grid)?"Valid solution":"Invalid solution");
}
private static int[][] readASolution() {
Scanner input=new Scanner(System.in);
System.out.println("請輸入結(jié)果:");
int [][]grid=new int[9][9];
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
grid[i][j]=input.nextInt();
return grid;
}
private static boolean isValid(int [][]grid){
//判斷每一個數(shù)字是不是符合規(guī)則
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
if(grid[i][j]<1||grid[i][j]>9||!isValid(i,j,grid))
return false;
return true;
}
//驗(yàn)證i行j列的數(shù)字竞慢,在該行是不是唯一的,在該列是不是唯一的治泥,在3*3的方格中是不是唯一的
private static boolean isValid(int i, int j, int[][] grid) {
//驗(yàn)證在i行是不是唯一的
for(int column=0;column<9;column++)
if(column!=j&&grid[i][column]==grid[i][j])
return false;
//驗(yàn)證在j列是不是唯一
for(int row=0;row<9;row++)
if(row!=i&&grid[row][j]==grid[i][j])
return false;
//驗(yàn)證在3*3的格子里是不是唯一的
for(int row=(i/3)*3;row<(i/3)*3+3;row++){
for(int col=(j/3)*3;col<(j/3)*3+3;col++)
if(row!=i&&col!=j&&grid[row][col]==grid[i][j])
return false;
}
return true;
}
}