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")
}
}
}
呀,真麻烦,本来以为一会就能写出来呢
直接循环一下不就好了。int rt[]={1,2,3} //定义数组
int r[]=new int[rt.length] //定义一个和要转换数组同长度的数组
for(int i=0i<rt.lengthi++){
r[rt.length-1-i]=rt[i] //从最后向前填充r数组
}
r就是你要的反转数组了。