将一个二维数组旋转90度 用Java编写代码

Python08

将一个二维数组旋转90度 用Java编写代码,第1张

#include<stdio.h>

#define N 4

int a[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}

void prt()

{int i,j

for(i=0i<Ni++)

{

for(j=0j<Nj++)

printf("%4d",a[i][j])

printf("\n")

}

}

int main()

{int i,j,k,t

printf("原来的数组:\n")

prt()

for(i=0i<=N/2i++)

for(j=ij<N-i-1j++)

{

t=a[i][j]

a[i][j]=a[j][N-1-i]

a[j][N-1-i]=a[N-1-i][N-1-j]

a[N-1-i][N-1-j]=a[N-1-j][i]

a[N-1-j][i]=t

}

printf("\n顺时针旋转90度后的数组:\n")

prt()

getch()

return 0

}

import java.util.*

public class TurnChessboard

{

static void printArray(int[][] s)

{

for(int[] i:s)

{

for(int j:i)

System.out.printf("%2d",j)

System.out.println("")

}

}

static int turn(int i)

{

if(i==0)

return 1

else

return 0

}

public static void main(String[] args)

{

Scanner in=new Scanner(System.in)

int m,n

System.out.println("请输入行数和列数(必须是奇数):")

m=in.nextInt()

n=in.nextInt()

while(m%2==0||n%2==0)

{

System.out.println("非法的输入!请重试:")

m=in.nextInt()

n=in.nextInt()

}

int[][] cbd=new int[m][n]

int[] role=new int[m]

int[] cole=new int[n]

int count=0,tempcount=0

int i,j

System.out.printf("请输入一个%d*%d棋盘:\n",m,n)

for(i=0i<mi++)

for(j=0j<nj++)

cbd[i][j]=in.nextInt()

if(m<=n)

{

for(i=0i<mi++)

for(j=0j<nj++)

role[i]+=cbd[i][j]

for(i=0i<mi++)

if(role[i]%2==1)

{

for(j=0j<nj++)

cbd[i][j]=turn(cbd[i][j])

count++

System.out.printf("第%d次翻转后的棋盘(变换第%d行):\n",count,i+1)

printArray(cbd)

}

for(j=0j<nj++)

for(i=0i<mi++)

cole[j]+=cbd[i][j]

for(int t1:cole)

if(t1%2==1)

tempcount++

if(tempcount%2==0)

{

for(j=0j<nj++)

if(cole[j]%2==1)

{

for(i=0i<mi++)

cbd[i][j]=turn(cbd[i][j])

count++

System.out.printf("第%d次翻转后的棋盘(变换第%d列):\n",count,j+1)

printArray(cbd)

}

System.out.printf("\n需要进行%d次翻转\n",count)

}

else

System.out.printf("\n不能通过有限的反转使行或列的1的个数为偶数!\n")

}

else

{

for(j=0j<nj++)

for(i=0i<mi++)

cole[j]+=cbd[i][j]

for(j=0j<nj++)

if(cole[j]%2==1)

{

for(i=0i<mi++)

cbd[i][j]=turn(cbd[i][j])

count++

System.out.printf("第%d次翻转后的棋盘(变换第%d列):\n",count,j+1)

printArray(cbd)

}

for(i=0i<mi++)

for(j=0j<nj++)

role[i]+=cbd[i][j]

for(int t2:role)

if(t2%2==1)

tempcount++

if(tempcount%2==0)

{

for(i=0i<mi++)

if(role[i]%2==1)

{

for(j=0j<nj++)

cbd[i][j]=turn(cbd[i][j])

count++

System.out.printf("第%d次翻转后的棋盘(变换第%d行):\n",count,i+1)

printArray(cbd)

}

System.out.printf("\n需要进行%d次翻转\n",count)

}

else

System.out.printf("\n不能通过有限的翻转使行或列的1的个数为偶数!\n")

}

}

}

呀,真麻烦,本来以为一会就能写出来呢