CCF的俄罗斯方块问题:
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int[][] x=new int[15][10];
for(int i=0;i<15;i++)
for(int j=0;j<10;j++)
x[i][j]=sc.nextInt();
int[][] y=new int[4][4];
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
y[i][j]=sc.nextInt();
int z=sc.nextInt();
int m=0;
int[] xx=new int[4];
int[] yy=new int[4];
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
if(y[i][j]==1){
xx[m]=i;
yy[m]=j+z;
m++;
}
int aa=0;
boolean f=true;
while(f){
for(int i=0;i<4;i++)
if(x[xx[i]+1][yy[i]-1]!=1) //提示我在这一行越界
{aa++;}
else{for(int j=0;j<4;j++)
x[xx[j]][yy[j]-1]=1;
f=false;
break;
}
if(aa==4){
aa=0;
for(int j=0;j<4;j++)
xx[j]++;}
}
for(int i=0;i<15;i++)
{ for(int j=0;j<10;j++)
System.out.print(x[i][j]+" ");
System.out.println();
}
}
}
我输入的数据:
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 1 1 1 0 0
0 0 1 0 1 1 1 0 1 0
0 0 0 0 1 1 0 0 1 0
0 0 0 0
1 1 0 0
1 1 0 0
0 0 0 0
1 //把它改成不是1的数就正常,不明白