游客 Signup | Login
中文 | En

1606 - C翻转

首先输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。

操作类型有四种:  

1 2 表示:90度,顺时针,翻转4个数  
1 3 表示:90度,顺时针,翻转9个数  
2 2 表示:90度,逆时针,翻转4个数  
2 3 表示:90度,逆时针,翻转9个数 

Input

输入有多组数据。

每组输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。

Output

输出翻转后的数组。

Examples

Input

11 12 13 14 15
16 17 18 19 20
1 2 3 4 5
6 7 8 9 10
21 22 23 24 25
1 3 2 2
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
1 2 3 4 5
6 7 8 9 10
1 2 2 1

Output

11 12 13 14 15
16 7 2 17 20
1 8 3 18 5
6 9 4 19 10
21 22 23 24 25
11 12 13 14 15
21 16 18 19 20
22 17 23 24 25
1 2 3 4 5
6 7 8 9 10

Solution C

#include<stdio.h>
void Convert(int arr[5][5],int a,int b,int x,int y)
{
	int i,j;
	if(a==1&&b==2)
	{
		int tmp[2][2];
		for(i=0;i<2;i++)
			for(j=0;j<2;j++)
				tmp[i][j]=arr[x-j][y+i-1];
		for(i=0;i<2;i++)
            for(j=0;j<2;j++)
				arr[x+i-1][y+j-1]=tmp[i][j];
    }
	if(a==1&&b==3)
	{
		int tmp[3][3];
		for(i=0;i<3;i++)
			for(j=0;j<3;j++)
				tmp[i][j]=arr[x+1-j][y+i-1];
		for(i=0;i<3;i++)
            for(j=0;j<3;j++)
				arr[x+i-1][y+j-1]=tmp[i][j];
	}
	if(a==2&&b==2)
	{
		int tmp[2][2];
		for(i=0;i<2;i++)
			for(j=0;j<2;j++)
				tmp[i][j]=arr[x+j-1][y-i];
		for(i=0;i<2;i++)
            for(j=0;j<2;j++)
				arr[x+i-1][y+j-1]=tmp[i][j];
	}
	if(a==2&&b==3)
	{
		int tmp[3][3];
		for(i=0;i<3;i++)
			for(j=0;j<3;j++)
				tmp[i][j]=arr[x+j-1][y+1-i];
		for(i=0;i<3;i++)
            for(j=0;j<3;j++)
				arr[x+i-1][y+j-1]=tmp[i][j];
	}
}
int main()
{
	int arr[5][5];
	int i,j;
	while(scanf("%d%d%d%d%d",&arr[0][0],&arr[0][1],&arr[0][2],&arr[0][3],&arr[0][4])!=EOF)
	{
		for(i=1;i<5;i++)
			for(j=0;j<5;j++)
				scanf("%d",&arr[i][j]);
		int a,b,x,y;
		scanf("%d%d%d%d",&a,&b,&x,&y);
		Convert(arr,a,b,x,y);
		for(i=0;i<5;i++)
		{
			for(j=0;j<5;j++)
			{
				if(j==4)
					printf("%d",arr[i][j]);
				else
					printf("%d ",arr[i][j]);
			}
			printf("\n");
		}
	}
	return 0;
}

Solution C++

#include <stdio.h>  
  
int main()  
{  
    // 所有数的数目   
    int  cnt[5][5]; 
     
      
    while(~scanf("%d%d%d%d%d",&cnt[0][0],&cnt[0][1],&cnt[0][2],&cnt[0][3],&cnt[0][4])){
          
          for(int i=1;i<5;i++)
           scanf("%d%d%d%d%d",&cnt[i][0],&cnt[i][1],&cnt[i][2],&cnt[i][3],&cnt[i][4]);
          
          int a,b,x,y;
          scanf("%d%d%d%d",&a,&b,&x,&y);
          
          int temp=0;
          if(a == 1 && b == 2){
               temp= cnt[x-1][y-1];
               cnt[x-1][y-1] = cnt[x][y-1];
               cnt[x][y-1] = cnt[x][y];
               cnt[x][y] = cnt[x-1][y];
               cnt[x-1][y] = temp;
               
               }
          
          else if(a == 1 && b == 3){
                temp= cnt[x-1][y-1];
               cnt[x-1][y-1] = cnt[x+1][y-1];
               cnt[x+1][y-1] = cnt[x+1][y+1];
               cnt[x+1][y+1] = cnt[x-1][y+1];
               cnt[x-1][y+1] = temp;
                temp= cnt[x-1][y];
               cnt[x-1][y] = cnt[x][y-1];
               cnt[x][y-1] = cnt[x+1][y];
               cnt[x+1][y] = cnt[x][y+1];
               cnt[x][y+1] = temp;
               }   
          else if(a == 2 && b == 2){
               temp= cnt[x-1][y-1];
               cnt[x-1][y-1] = cnt[x-1][y];
               cnt[x-1][y] = cnt[x][y];
               cnt[x][y] = cnt[x][y-1];
               cnt[x][y-1] = temp;
               }       
          else if(a == 2 && b == 3){
                               
               temp= cnt[x-1][y-1];
               cnt[x-1][y-1] = cnt[x-1][y+1];
               cnt[x-1][y+1] = cnt[x+1][y+1];
               cnt[x+1][y+1] = cnt[x+1][y-1];
               cnt[x+1][y-1] = temp;
                temp= cnt[x-1][y];
               cnt[x-1][y] = cnt[x][y+1];
               cnt[x][y+1] = cnt[x+1][y];
               cnt[x+1][y] = cnt[x][y-1];
               cnt[x][y-1] = temp;            
          }
    for(int i=0;i<5;i++)
           printf("%d %d %d %d %d\n",cnt[i][0],cnt[i][1],cnt[i][2],cnt[i][3],cnt[i][4]);
           //我多么想和你再见一面,不再说从前,只是寒暄,陪你聊聊天
           //输出一定不要&,输入一定要& 
}
            

      
    return 0;      
}
Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题