import java.util.Arrays;
import java.util.Scanner;
public class lian7_11 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("Enter the size for the matrix:");
int line=scanner.nextInt();
int[][] matrix=new int[line][line];
fuzhi(matrix);
print(line, matrix);
Row(matrix);
Col(matrix);
Diagonal(matrix);
subDiagonal(matrix);
}
private static void subDiagonal(int[][] matrix) {
boolean flag=true;
int m=matrix[0][matrix.length-1];
for(int i=1;i<matrix.length;i++){
if(m!=matrix[i][matrix.length-1-i]){
flag=false;
break;
}
}
if(flag){
System.out.println("All on subDiagonal");
}
}
private static void Diagonal(int[][] matrix) {
boolean flag=true;
int m=matrix[0][0];
for(int i=0;i<matrix.length;i++){
if(m!=matrix[i][i]){
flag=false;
break;
}
}
if(flag){
System.out.printf("All on Diagonal\n");
}
}
private static void Col(int[][] matrix) {
for(int j=0;j<matrix[0].length;j++){
int m=matrix[0][j];
boolean flag = true;
for(int i=1;i<matrix.length;i++){
if(m!=matrix[i][j]){
flag=false;
break;
}
}
if(flag){
System.out.printf("All %d on col %d\n",m,j+1);
}
}
}
private static void Row(int[][] matrix) {
for(int i=0;i<matrix.length;i++){
int m=matrix[i][0];
boolean flag = true;
for(int j=1;j<matrix[i].length;j++){
if(m!=matrix[i][j]){
flag = false;
break;
}
}
if(flag){
System.out.printf("All %d on row %d\n",m,i+1);
}
}
}
private static void print(int line, int[][] matrix) {
for(int i=0;i<line;i++){
System.out.println(Arrays.toString(matrix[i]));
}
}
private static void fuzhi(int[][] matrix) {
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
matrix[i][j]=(int) (Math.random()*2);
}
}
}
}
import java.util.Arrays;
public class lian7_12 {
public static void main(String[] args) {
int[][] matrix={
{1,5},
{2,4},
{1,3},
{5,1},
{8,2},
{4,8},
{3,4},
{7,4},
{1,1}
};
SortByLine(matrix);
System.out.println("=================================");
SortALLElem(matrix);
}
private static void SortALLElem(int[][] matrix) {
int[] n=new int[matrix.length*matrix[0].length];
int index=0;
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
n[index++]=matrix[i][j];
}
}
Arrays.sort(n);
index=0;
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
matrix[i][j]=n[index++];
}
}
for(int i=0;i<matrix.length;i++){
System.out.println(Arrays.toString(matrix[i]));
}
}
private static void SortByLine(int[][] matrix) {
for(int i=0;i<matrix.length-1;i++){
int mi=sort(matrix[i]);
for(int j=i+1;j<matrix.length;j++){
int mj=sort(matrix[j]);
if(mi>mj){
int[] temp=matrix[i];
matrix[i]=matrix[j];
matrix[j]=temp;
mi=mj;
}
}
}
for(int i=0;i<matrix.length;i++){
System.out.println(Arrays.toString(matrix[i]));
}
}
private static int sort(int[] matrix) {
String s="";
for(int i=0;i<matrix.length;i++){
s=s+matrix[i];
}
return Integer.parseInt(s);
}
}
7.13
import java.util.Arrays;
import java.util.Scanner;
public class lian7_13 {
private static final String matrix = null;
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.print("Enter the row and col:");
int row=scanner.nextInt();
int col=scanner.nextInt();
if(row<4&&col<4){
System.out.println("行列数不能小于4:");
return;
}
int[][] matrix=new int[row][col];
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
matrix[i][j]=(int) (Math.random()*2);
}
}
for(int i=0;i<row;i++){
System.out.println(Arrays.toString(matrix[i]));
}
boolean flag=isConsecutiveFour(matrix);
System.out.println(flag);
}
public static boolean isConsecutiveFour(int[][] values){
boolean flag=false;
if(AllRow(values)||AllCol(values)||Diagonal(values)||subDiagonal(values)){
flag=true;
}
return flag;
}
private static boolean subDiagonal(int[][] values) {
boolean flag=false;
for(int i=0;i<values.length;i++){
for(int j=0;j<values[i].length;j++){
int m=values[i][j];
if(i>=3&&j<=values[0].length-4){
if(m!=values[i-1][j+1]||m!=values[i-2][j+2]||m!=values[i-3][j+3]){
break;
}else{
flag=true;
break;
}
}
}
}
if(flag){
System.out.println("SubDiagonal");
}
return flag;
}
private static boolean Diagonal(int[][] values) {
boolean flag=false;
for(int i=0;i<values.length;i++){
for(int j=0;j<values[i].length;j++){
int m=values[i][j];
if(i<=values.length-4&&j<=values[i].length-4){
if(m!=values[i+1][j+1]||m!=values[i+2][j+2]||m!=values[i+3][j+3]){
break;
}else{
flag=true;
break;
}
}
}
}
if(flag){
System.out.println("Diagonal");
}
return flag;
}
private static boolean AllCol(int[][] values) {
boolean flag=false;
for(int j=0;j<values[0].length;j++){
for(int i=0;i<values.length;i++){
int m=values[i][j];
if(i<=values.length-4){
if(m!=values[i+1][j]||m!=values[i+2][j]||m!=values[i+3][j]){
break;
}else{
flag=true;
break;
}
}
}
}
if(flag){
System.out.println("col");
}
return flag;
}
private static boolean AllRow(int[][] values) {
boolean flag=false;
for(int i=0;i<values.length;i++){
for(int j=0;j<values[i].length;j++){
int m=values[i][j];
if(j<=values[0].length-4){
if(m!=values[i][j+1]||m!=values[i][j+2]||m!=values[i][j+3]){
break;
}else{
flag=true;
break;
}
}
}
}
if(flag){
System.out.println("row");
}
return flag;
}
}
import java.util.Arrays;
import java.util.Scanner;
public class lian7_14 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
double[][] matrix=new double[3][3];
System.out.println("Enter a 3-by-3 matrix row and col:");
//赋值
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
matrix[i][j]=scanner.nextDouble();
}
}
//打印
for(int i=0;i<3;i++){
System.out.println(Arrays.toString(matrix[i]));
}
if(isMarkovMatrix(matrix)){
System.out.println("It is a Markov matrix!");
}else{
System.out.println("It is not a Markov matrix!");
}
}
public static boolean isMarkovMatrix(double[][] m){
for(int j=0;j<m[0].length;j++){
double sum=0;
for(int i=0;i<m.length;i++){
if(m[i][j]<0){
return false;
}
sum+=m[i][j];
}
if(sum!=1){
return false;
}
}
return true;
}
}
import java.util.Arrays;
public class lian7_15 {
public static void main(String[] args) {
double[][] a=new double[][]{
{5,10},
{0,20}
};
double[] b=new double[]{9,20};
double[] result=lineaeEquation(a,b);
if(result==null){
System.out.println("无解!");
}else{
System.out.println(Arrays.toString(result));
}
}
private static double[] lineaeEquation(double[][] a, double[] b) {
double[] res=new double[2];
double delt=a[0][0]*a[1][1]-a[0][1]*a[1][0];
if(delt==0){
return null;
}
res[0]=(b[0]*a[1][1]-b[1]*a[0][1])/delt;
res[1]=(b[1]*a[0][0]-b[0]*a[1][0])/delt;
return res;
}
}
7.16
import java.util.Scanner;
public class lian7_16 {
public static void main(String[] args) {
double[][] points=new double[3][2];
Scanner scanner=new Scanner(System.in);
System.out.print("Enter x1,y1,x2,y2,x3,y3:");
for(int i=0;i<points.length;i++){
for(int j=0;j<points[i].length;j++){
points[i][j]=scanner.nextDouble();
}
}
double area=getTriangleArea(points);
System.out.println("The area of the triangle is "+area);
}
private static double getTriangleArea(double[][] points) {
double[] sides=new double[3];
sides[0]=getDistance(points[0],points[1]);
sides[1]=getDistance(points[0],points[2]);
sides[2]=getDistance(points[1],points[2]);
double s=(sides[0]+sides[1]+sides[2])/2;
if(sides[0]+sides[1]>sides[2]&&sides[0]+sides[2]>sides[1]&&
sides[1]+sides[2]>sides[0]){
double area=Math.sqrt(s*(s-sides[0])*(s-sides[1])*(s-sides[2]));
return area;
}else{
System.out.println("三点共线");
return 0;
}
}
private static double getDistance(double[] p1, double[] p2) {
return Math.sqrt(Math.pow(p1[0]-p2[0], 2)+Math.pow(p1[1]-p2[1], 2));
}
}
import java.util.Arrays;
import java.util.Scanner;
public class lian7_17 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
double[][] points=new double[4][2];
System.out.println("Enter x1 y1 x2 y2 x3 y3 x4 y4:");
for(int i=0;i<points.length;i++){
for(int j=0;j<points[i].length;j++){
points[i][j]=scanner.nextDouble();
}
}
double[] p=getCenter(points);
double[] area=new double[4];
area[0]=getArea(points[0],points[1],p);
area[1]=getArea(points[1],points[2],p);
area[2]=getArea(points[2],points[3],p);
area[3]=getArea(points[0],points[3],p);
System.out.println(Arrays.toString(area));
}
private static double getArea(double[] p1, double[] p2, double[] p) {
double[] sides=new double[3];
sides[0]=getDistance(p1,p2);
sides[1]=getDistance(p,p1);
sides[2]=getDistance(p,p2);
double s=(sides[0]+sides[1]+sides[2])/2;
double area=Math.sqrt(s*(s-sides[0])*(s-sides[1])*(s-sides[2]));
return area;
}
private static double getDistance(double[] p1, double[] p2) {
return Math.sqrt(Math.pow(p1[0]-p2[0], 2)+Math.pow(p1[1]-p2[1], 2));
}
private static double[] getCenter(double[][] points) {
/*(x1,y1)(x3,y3)构成一条直线
* (x2,y2)(x4,y4)构成一条直线
* 求两条直线的交点
* ax+by=e
* cx+dy=f
* x=(de-bf)/(ad-bc)
* y=(af-ec)/(ad-bc)
* a=y1-y3
* b=x1-x3
* c=y2-y4
* d=x2-x4
* e=(y1-y3)*x1-(x1-x3)*y1
* f=(y2-y4)*x2-(x2-x4)*y2
*
*/
double[] p=new double[2];
double a=points[0][1]-points[2][1];
double b=points[0][0]-points[2][0];
double c=points[1][1]-points[3][1];
double d=points[1][0]-points[3][0];
double e=a*points[0][0]-b*points[0][1];
double f=c*points[1][0]-d*points[1][1];
double delt=a*d-b*c;
//x
p[0]=(d*e-b*f)/delt;
//y
p[1]=(a*f-e*c)/delt;
return p;
}
}
import java.util.Arrays;
import java.util.Scanner;
public class lian7_18 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.print("Enter the number of rows int the line:");
int line=scanner.nextInt();
int[][] matrix=new int[line][line];
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
matrix[i][j]=(int) (Math.random()*2);
}
}
for(int i=0;i<matrix.length;i++){
System.out.println(Arrays.toString(matrix[i]));
}
int[] point=findLargestBlock(matrix);
System.out.println(Arrays.toString(point));
}
private static int[] findLargestBlock(int[][] m) {
int[] point=new int[2];
int size=0;
for(int i=0;i<m.length;i++){
for(int j=0;j<m.length;j++){
if(m[i][j]==1){
int count=1;
for(int k=j+1;k<m.length;k++){
if(m[i][k]==m[i][j]){
count++;
}else{
break;
}
}
boolean flag=true;
for(int k=1;k<count;k++){
if(i+k>=m.length){
flag=false;
break;
}
if(m[i][j]!=m[i+k][j]){
flag=false;
break;
}
}
if(flag){
boolean isAllOne=true;
for(int x=i;x<i+count;x++){
for(int y=j;y<j+count;y++){
if(m[x][y]!=1){
isAllOne=false;
break;
}
}
}
if(isAllOne&&count>size){
point[0]=i;
point[1]=j;
size=count;
}
}
}
}
}
System.out.println(size);
return point;
}
}
7.19
public class lian7_19 {
public static void main(String[] args) {
String[] letters={"A","B","C","D","E","F","G"};
for(int i=0;i<letters.length;i++){
int count=i;
for(int j=0;j<letters.length;j++){
System.out.print(letters[count%7]+" ");
count++;
}
System.out.println();
}
}
}