10 条题解

  • -1
    @ 2023-5-7 7:55:13

    有一个小坑点:数组不能用char,要用int否则最后一个点不能过

    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    int n,q;
    int a[105][105];
    void print()
    {
    	for(int i = 1;i <= n;i++)
    	{
    		for(int j = 1;j <= n;j++)
    		{
    			cout << a[i][j] << " ";
    		}
    		cout << '\n';
    	}
    }
    signed main()
    {
    	cin >> n >> q;
    	for(int i = 1;i <= n;i++)
    	{
    		for(int j = 1;j <= n;j++)
    		{
    			cin >> a[i][j];
    		}
    	}
    	while(q--)
    	{
    		int x;
    		cin >> x;
    		if(x == 1)
    		{
    			for(int i = 1;i <= n;i++)
    			{
    				a[n + 1][i] = a[1][i]; 
    			}
    			for(int i = 2;i <= n + 1;i++)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					a[i - 1][j] = a[i][j];
    				}
    			}
    		}
    		else if(x == 2)
    		{
    			for(int i = 1;i <= n;i++)
    			{
    				a[0][i] = a[n][i];
    			}
    			for(int i = n - 1;i >= 0;i--)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					a[i + 1][j] = a[i][j];
    				}
    			}
    		}
    		else if(x == 3)
    		{
    			for(int i = 1;i <= n;i++)
    			{
    				a[i][n + 1] = a[i][1];
    			}
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 2;j <= n + 1;j++)
    				{
    					a[i][j - 1] = a[i][j];
    				}
    			}
    		}
    		else if(x == 4)
    		{
    			for(int i = 1;i <= n;i++)
    			{
    				a[i][0] = a[i][n];
    			}
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = n - 1;j >= 0;j--)
    				{
    					a[i][j + 1] = a[i][j];
    				}
    			}
    		}
    		else if(x == 5)
    		{
    			int p[105][105];
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					p[i][n - j + 1] = a[j][i];
    				}
    			}
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					a[i][j] = p[i][j];
    				}
    			}
    		}
    		else if(x == 6)
    		{
    			int p[105][105];
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					p[i][n - j + 1] = a[j][i];
    				}
    			}
    			int p2[105][105];
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					p2[i][n - j + 1] = p[j][i];
    				}
    			}
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					a[i][j] = p2[i][j];
    				}
    			}
    		}
    		else
    		{
    			int p[105][105];
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					p[i][n - j + 1] = a[j][i];
    				}
    			}
    			int p2[105][105];
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					p2[i][n - j + 1] = p[j][i];
    				}
    			}
    			int p3[105][105];
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					p3[i][n - j + 1] = p2[j][i];
    				}
    			}
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					a[i][j] = p3[i][j];
    				}
    			}
    		}
    		print();
    		cout << '\n';
    	}
    	return 0;
    }
    

    信息

    ID
    2956
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    649
    已通过
    166
    上传者