英文名:Introduction to Java Programming and Data Structures, Comprehensive Version, 11th Edition
8.1
import java.util.*;import java.io.*;publicclassbook{publicstaticvoidmain(String[] args)throws Exception
{
Scanner input =newScanner(System.in);double[][] test =newdouble[3][4];
System.out.printf("Enter a 3-by-4 matrix by row:");for(int i=0;i<3;i++)for(int j=0;j<4;j++)
test[i][j]=input.nextDouble();for(int i=0;i<4;i++)
System.out.printf("Sum of the elements at column %d is %.1f\n",i,sumColumn(test,i));}publicstaticdoublesumColumn(double[][] m,int columnIndex){int rows = m.length;double sum =0.0;for(int i=0;i<rows;i++){
sum+=m[i][columnIndex];}return sum;}}
8.2
import java.util.*;import java.io.*;publicclassbook{publicstaticvoidmain(String[] args)throws Exception
{
Scanner input =newScanner(System.in);double[][] test =newdouble[4][4];
System.out.println("Enter a 4-by-4 matrix row by row:");for(int i=0;i<4;i++)for(int j=0;j<4;j++)
test[i][j]=input.nextDouble();
System.out.println("Sum of the elements in the major diagonal is "+sumMajorDiagonal(test));}publicstaticdoublesumMajorDiagonal(double[][] m){int len = m.length;double sum =0.0;for(int i=0;i<len;i++)
sum+=m[i][i];return sum;}}
import java.util.*;import java.io.*;publicclassbook{publicstaticvoidmain(String[] args)throws Exception
{
Scanner input =newScanner(System.in);char[][] dick =newchar[3][3];for(int i =0;i<3;i++)for(int j=0;j<3;j++)
dick[i][j]='a';int xo =0;char[] xos ={'X','O'};while(true){printMap(dick);int row;int column;
System.out.println("Enter a row (0,1, or 2) for player "+xos[xo%2]+":");
row = input.nextInt();
System.out.println("Enter a column (0,1, or 2) for player "+xos[xo%2]+":");
column = input.nextInt();
dick[row][column]=xos[xo%2];
xo++;if(checkWin(dick,'X')){
System.out.println("X player won");break;}elseif(checkWin(dick,'O')){
System.out.println("O player won");break;}}}publicstaticvoidprintMap(char[][] ass){
System.out.println("..........");for(int i=0;i<3;i++){for(int j=0;j<3;j++){
System.out.print("|");if(ass[i][j]=='a')
System.out.print(" ");else
System.out.print(ass[i][j]);}
System.out.println("|");
System.out.println("..........");}}publicstaticbooleancheckWin(char[][] ass,char xo){if(xo=='X'){for(int i=0;i<3;i++)if(ass[i][0]=='X'&&ass[i][1]=='X'&&ass[i][2]=='X')returntrue;for(int i=0;i<3;i++)if(ass[0][i]=='X'&&ass[1][i]=='X'&&ass[2][i]=='X')returntrue;if(ass[0][0]=='X'&&ass[1][1]=='X'&&ass[2][2]=='X')returntrue;if(ass[0][2]=='X'&&ass[1][1]=='X'&&ass[2][0]=='X')returntrue;returnfalse;}else{for(int i=0;i<3;i++)if(ass[i][0]=='O'&&ass[i][1]=='O'&&ass[i][2]=='O')returntrue;for(int i=0;i<3;i++)if(ass[0][i]=='O'&&ass[1][i]=='O'&&ass[2][i]=='O')returntrue;if(ass[0][0]=='O'&&ass[1][1]=='O'&&ass[2][2]=='O')returntrue;if(ass[0][2]=='O'&&ass[1][1]=='O'&&ass[2][0]=='O')returntrue;returnfalse;}}}
8.11
import java.util.*;import java.io.*;publicclassbook{publicstaticvoidmain(String[] args)throws Exception
{
Scanner input =newScanner(System.in);int ass;
System.out.println("Enter a number between 0 and 511:");
ass = input.nextInt();int[] dick =newint[9];for(int i=0;i<9;i++){
dick[i]=ass%2;
ass/=2;}for(int i=0;i<3;i++){for(int j=0;j<3;j++){if(dick[3*i+j]==0)
System.out.print("T");else
System.out.print("H");
System.out.print(" ");}
System.out.print('\n');}}}
import java.util.*;import java.io.*;publicclassbook{publicstaticvoidmain(String[] args)throws Exception
{
Scanner input =newScanner(System.in);int rows;int columns;
System.out.println("Enter the number of rows:");
rows = input.nextInt();
System.out.println("Enter the number of columns:");
columns = input.nextInt();int[][] jesus =newint[rows][columns];
System.out.println("Enter the matrix:");for(int i=0;i<rows;i++)for(int j=0;j<columns;j++)
jesus[i][j]= input.nextInt();
System.out.println(isConsecutiveFour(jesus));}publicstaticbooleanisConsecutiveFour(int[][] values){int rows = values.length;int columns = values[0].length;for(int i=0;i<rows;i++)for(int j=0;j<=columns-4;j++)if(values[i][j]==values[i][j+1]&&values[i][j]==values[i][j+2]&&values[i][j]==values[i][j+3])returntrue;for(int i=0;i<columns;i++)for(int j=0;j<=rows-4;j++)if(values[j][i]==values[j+1][i]&&values[j][i]==values[j+2][i]&&values[j][i]==values[j+3][i])returntrue;for(int i=3;i<rows;i++)for(int j=0;j<columns-3;j++)if(values[i][j]==values[i-1][j+1]&&values[i][j]==values[i-2][j+2]&&values[i][j]==values[i-3][j+3])returntrue;for(int i=0;i<rows-3;i++)for(int j=0;j<columns-3;j++)if(values[i][j]==values[i+1][j+1]&&values[i][j]==values[i+2][j+2]&&values[i][j]==values[i+3][j+3])returntrue;returnfalse;}}
8.20
import java.util.*;import java.io.*;publicclassbook{publicstaticvoidmain(String[] args)throws Exception
{
Scanner input =newScanner(System.in);
String[] rys ={"red","yellow"};int ry =0;int[] ptrs ={5,5,5,5,5,5,5};int[][] map =newint[6][7];while(true){printMap(map);if(isConsecutiveFour(map,1)){
System.out.println("The red player won");break;}if(isConsecutiveFour(map,2)){
System.out.println("The yellow player won");break;}
System.out.print("Drop a "+rys[ry%2]+" disk at column (0-6):");int dick = input.nextInt();
map[ptrs[dick]][dick]=ry%2+1;
ptrs[dick]--;
ry++;}}publicstaticbooleanisConsecutiveFour(int[][] values,int ass){int rows = values.length;int columns = values[0].length;for(int i=0;i<rows;i++)for(int j=0;j<=columns-4;j++)if(values[i][j]==values[i][j+1]&&values[i][j]==values[i][j+2]&&values[i][j]==values[i][j+3]&&values[i][j]==ass)returntrue;for(int i=0;i<columns;i++)for(int j=0;j<=rows-4;j++)if(values[j][i]==values[j+1][i]&&values[j][i]==values[j+2][i]&&values[j][i]==values[j+3][i]&&values[j][i]==ass)returntrue;for(int i=3;i<rows;i++)for(int j=0;j<columns-3;j++)if(values[i][j]==values[i-1][j+1]&&values[i][j]==values[i-2][j+2]&&values[i][j]==values[i-3][j+3]&&values[i][j]==ass)returntrue;for(int i=0;i<rows-3;i++)for(int j=0;j<columns-3;j++)if(values[i][j]==values[i+1][j+1]&&values[i][j]==values[i+2][j+2]&&values[i][j]==values[i+3][j+3]&&values[i][j]==ass)returntrue;returnfalse;}publicstaticvoidprintMap(int[][] values){for(int i=0;i<6;i++){for(int j=0;j<7;j++){
System.out.print("|");if(values[i][j]==0)
System.out.print(" ");elseif(values[i][j]==1)
System.out.print("R");elseif(values[i][j]==2)
System.out.print("Y");}
System.out.println("|");}
System.out.println("---------------");}}
8.35
import java.util.*;import java.io.*;publicclassbook{publicstaticvoidmain(String[] args)throws Exception
{
Scanner input =newScanner(System.in);
System.out.print("Enter the number of rows in the matrix:");int ass = input.nextInt();int[][] test =newint[ass][ass];
System.out.println("Enter the matrix row by row:");for(int i=0;i<ass;i++)for(int j=0;j<ass;j++)
test[i][j]=input.nextInt();int[] jesus =findLargestBlock(test);
System.out.printf("The maximum square submatrix is at (%d,%d) with size %d\n",jesus[0],jesus[1],jesus[2]);}publicstaticint[]findLargestBlock(int[][] m){int[] res =newint[3];int n = m.length;for(int i=0;i<n;i++)for(int j=0;j<n;j++){for(int r=1;r<=Math.min(n-i,n-j);r++){if(allOne(i,j,r,m)){if(r>res[2]){
res[0]=i;
res[1]=j;
res[2]=r;}}}}return res;}publicstaticbooleanallOne(int pinr,int pinc,int range,int[][] m){boolean all1 =true;for(int i=0;i<range;i++)for(int j=0;j<range;j++){if(m[pinr+i][pinc+j]==0){
all1 =false;break;}}return all1;}}