9 条题解

  • 2
    @ 2023-5-5 19:54:09

    按题意模拟。再建造一个二维数组 bb,用于存操作完的 aa 数组。操作完后进入 print() 函数,输出 bb 数组,再将 aa 数组更新。

    操作:

    • 平移:11操作时,bb从第一行开始存aa从第二行开始的数,最后补上未存的数。2,3,42,3,4操作类似。
    • 旋转:观察样例:
      1 2 3
      4 5 6
      7 8 9
      
      转完后:
      7 4 1
      8 5 2
      9 6 3
      
      可以发现,只是bb存的时候先存列,再将行倒过来 其余同理。

    \color{blue} 代 \color{green} 码:

    #include <bits/stdc++.h> 
    using namespace std;
    
    int n,q,a[101][101],num,b[101][101];
    
    void print()//输出并且更新a
    {
    	for(int i = 1;i <= n;i++)
    	{
    		for(int j = 1;j <= n;j++)
    		{
    			a[i][j] = b[i][j];
    			printf("%d ",a[i][j]);
    		}
    		printf("\n");
    	}
    	printf("\n");
    	return;
    }
    
    signed main()
    {
    	scanf("%d%d",&n,&q);
    	for(int i = 1;i <= n;i++)
    	{
    		for(int j = 1;j <= n;j++)
    		{
    			scanf("%d",&a[i][j]);
    		}
    	}
    	for(int x = 1;x <= q;x++)
    	{
    		scanf("%d",&num);
    		if(num == 1)
    		{
    			for(int i = 2,o = 1;i <= n;i++,o++)//b从第一行开始存a从第二行开始的数
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					b[o][j] = a[i][j];
    				}
    			}
    			for(int i = 1;i <= n;i++) b[n][i] = a[1][i];//补上未赋值的
    			print();//输出
    		}
    		else if(num == 2)//同上
    		{
    			for(int i = 2,o = 1;i <= n;i++,o++)
    			{
    				for(int j = 1;j <= n;j++)
    				{
    					b[i][j] = a[o][j];
    				}
    			}
    			for(int i = 1;i <= n;i++) b[1][i] = a[n][i];
    			print();
    		}
    		else if(num == 3)//同上
    		{
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 2,o = 1;j <= n;j++,o++)
    				{
    					b[i][o] = a[i][j];
    				}
    			}
    			for(int i = 1;i <= n;i++) b[i][n] = a[i][1];
    			print();
    		}
    		else if(num == 4)//同上
    		{
    			for(int i = 1;i <= n;i++)
    			{
    				for(int j = 2,o = 1;j <= n;j++,o++)
    				{
    					b[i][j] = a[i][o];
    				}
    			}
    			for(int i = 1;i <= n;i++) b[i][1] = a[i][n];
    			print();
    		}
    		else if(num == 5)
    		{
    			for(int j = 1;j <= n;j++)
    			{
    				for(int i = 1,o = n;i <= n;i++,o--)
    				{
    					b[j][i] = a[o][j];
    				}
    			}
    			print();
    		}
    		else if(num == 6)
    		{
    			for(int i = n,o = 1;i >= 1;i--,o++)
    			{
    				for(int j = n,t = 1;j >= 1;j--,t++)
    				{
    					b[o][t] = a[i][j];
    				}
    			}
    			print();
    		}
    		else if(num == 7)
    		{
    			for(int j = n,o = 1;j >= 1;j--,o++)
    			{
    				for(int i = 1;i <= n;i++)
    				{
    					b[o][i] = a[i][j];
    				}
    			}
    			print();
    		}
    	}
    	return 0;
    }
    

    因本人很赖所以没有写出所有情况的解释

    • 1
      @ 2023-9-26 17:07:00

      题解链接

      暴力/队列

      思路讲解:

      1. 暴力方法
      • 对于f1:

      第一种:循环访问并向前移

      forin a[n+1][i]=a[1][i];
      forin forjn a[i][j]=a[i+1][j];
      

      第二种:直接swap\text{swap}

      for(int i=1;i<n;i++) swap(a[i],a[i+1]);
      
      • 对于f2:

      第一种:循环访问并向后移

      forin a[0][i]=a[n][i];
      	for(int i=n;i>=1;i--)forjn a[i][j]=a[i-1][j];
      

      第二种:直接swap\text{swap}

      for(int i=n;i>1;i--)
      	swap(a[i],a[i-1]);
      
      • 对于f3:同上f1
      for(int i=1;i<n;i++) forjn
      		swap(a[j][i],a[j][i+1]);
      
      • 对于f4:同上f2
      for(int i=n;i>1;i--) forjn
      		swap(a[j][i],a[j][i+1]);
      
      • 对于f5:向右旋转90度,可以用mspaint\text{mspaint}自己观察,如图所示:

      变成:

      int t[N][N];
      	forin forjn t[j][n-i+1]=a[i][j];
      	forin forjn a[i][j]=t[i][j];
      
      • 对于f6、f7:循环对应的f5次数即可

      暴力方法不给出代码 要代码的看这里

      2. deque

      定义双端队列a和b,表示行的位置关系与列的位置关系

      定义bool g为记录图表方向

      输入初始位置关系:

      forin a.push_back(i),b.push_back(i);

      • 对于f1:

      a.front()a.\text{front()}移动到a.back()a.\text{back()}

      a.push_back(a.front());
      a.pop_front();
      
      • 对于f2:

      a.back()a.\text{back()}移动到a.front()a.\text{front()}

      a.push_front(a.back());
      a.pop_back();
      
      • 对于f3:同上f1
      b.push_back(b.front());
      b.pop_front();
      
      • 对于f4:同上f2
      b.push_front(b.back());
      b.pop_back();
      
      • 对于f5:向右旋转90度,如上f5:

      定义函数f为反转队列函数:

      deque<int> f(deque<int> x){
      	deque<int> t;
      	while(!x.empty()){
      		t.push_front(x.front());
      		x.pop_front();
      	}
      	return t;
      }
      

      则f5为:

      void f5(){
      	swap(a,b);
      	b=f(b);
      }
      
      • 对于f6、f7:循环对应的f5次数即可

      记得输出

      暴力输出:

      forin{
      	forjn cout<<a[i][j]<<" ";
      		cout<<"\n";
      	}
      	cout<<"\n";
      

      deque输出:

      if(!g) for(int j=1;j<=a.size();j++){
      	for(int k=1;k<=b.size();k++){
      		cout<<q[a.front()][b.front()]<<" ";
      		b.push_back(b.front()); b.pop_front();
      	} 
      	a.push_back(a.front()); a.pop_front();
      	cout<<endl;
      }else for(int j=1;j<=a.size();j++){
      	for(int k=1;k<=b.size();k++){
      		cout<<q[b.front()][a.front()]<<" ";
      		b.push_back(b.front()); b.pop_front();
      	} 
      	a.push_back(a.front()); a.pop_front();
      	cout<<endl;
      }
      cout<<endl;
      

      代码如下:

      #include<bits/stdc++.h>
      using namespace std;
      #define ll long long
      #define int ll
      #define mem memset
      #define pin(c) scanf("%lld",&(c))
      #define forin for(int i=1;i<=n;i++)
      #define forim for(int i=1;i<=m;i++)
      #define forjn for(int j=1;j<=n;j++)
      #define forjm for(int j=1;j<=m;j++)
      #define forkn for(int k=1;k<=n;k++)
      #define forkm for(int k=1;k<=m;k++)
      #define Forx(c,l,r,p) for(int (c)=(l);(c)<=(r);(c)+=(p))
      #define Fory(c,l,r,p) for(int (c)=(l);(c)>=(r);(c)-=(p))
      const int N=1e2+10;
      const int INF=0x3f3f3f3f;
      deque<int> a,b;
      int n,q[N][N];
      deque<int> f(deque<int> x){
      	deque<int> t;
      	while(!x.empty()){
      		t.push_front(x.front());
      		x.pop_front();
      	}
      	return t;
      }
      void f5(){
      	swap(a,b);
      	b=f(b);
      }
      signed main(){
      	int t,c;
      	bool g=0;
      	pin(n),pin(t);
      	forin forjn pin(q[i][j]);
      	forin a.push_back(i),b.push_back(i);
      	for(int i=1;i<=t;i++){
      		pin(c);
      		if(c==1){
      			a.push_back(a.front());
      			a.pop_front();
      		}else if(c==2){
      			a.push_front(a.back());
      			a.pop_back();
      		}else if(c==3){
      			b.push_back(b.front());
      			b.pop_front();
      		}else if(c==4){
      			b.push_front(b.back());
      			b.pop_back();
      		}else if(c==5){
      			f5(); g=!g;
      		}else if(c==6){
      			f5(),f5();
      		}else if(c==7){
      			f5(),f5(),f5(); g=!g;
      		}
      		if(!g) for(int j=1;j<=a.size();j++){
      			for(int k=1;k<=b.size();k++){
      				cout<<q[a.front()][b.front()]<<" ";
      				b.push_back(b.front()); b.pop_front();
      			} 
      			a.push_back(a.front()); a.pop_front();
      			cout<<endl;
      		}else for(int j=1;j<=a.size();j++){
      			for(int k=1;k<=b.size();k++){
      				cout<<q[b.front()][a.front()]<<" ";
      				b.push_back(b.front()); b.pop_front();
      			} 
      			a.push_back(a.front()); a.pop_front();
      			cout<<endl;
      		}
      		cout<<endl;
      	}
      	return 0;
      }
      
      • 0
        @ 2023-11-13 20:34:59
        #include<bits/stdc++.h>
        using namespace std;
        int n;
        int a[105][105];
        void op1()
        {
            int b[105];
            for(int i=1;i<=n;i++)
            {
                b[i]=a[1][i];
            }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    a[i-1][j]=a[i][j];
                }
            }
            for(int i=1;i<=n;i++)
            {
                a[n][i]=b[i];
            }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    cout<<a[i][j]<<" ";
                }
                cout<<endl;
            }
        }
        void op2()
        {
            int b[105];
            for(int i=1;i<=n;i++)
            {
                b[i]=a[n][i];
            }
            for(int i=n;i>=1;i--)
            {
                for(int j=1;j<=n;j++)
                {
                    a[i+1][j]=a[i][j];
                }
            }
            for(int i=1;i<=n;i++)
            {
                a[1][i]=b[i];
            }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    cout<<a[i][j]<<" ";
                }
                cout<<endl;
            }
        }
        void op3()
        {
            int b[105];
            for(int i=1;i<=n;i++)
            {
                b[i]=a[i][1];
            }
            // for(int i=1;i<=n;i++){
            //     cout<<b[i]<<" ";
            // }
            // cout<<endl;
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    a[j][i-1]=a[j][i];
                }
                // for(int i=1;i<=n;i++)
                // {
                //     for(int j=1;j<=n;j++)
                //     {
                //         cout<<a[i][j]<<" ";
                //     }
                //     cout<<endl;
                // }
                // cout<<endl;
            }
            for(int i=1;i<=n;i++)
            {
                a[i][n]=b[i];
            }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    cout<<a[i][j]<<" ";
                }
                cout<<endl;
            }
        }
        void op4()
        {
            int b[105];
            for(int i=1;i<=n;i++)
            {
                b[i]=a[i][n];
            }
            // for(int i=1;i<=n;i++){
            //     cout<<b[i]<<" ";
            // }
            // cout<<endl;
            for(int i=n;i>=1;i--)
            {
                for(int j=1;j<=n;j++)
                {
                    a[j][i+1]=a[j][i];
                }
                // for(int i=1;i<=n;i++)
                // {
                //     for(int j=1;j<=n;j++)
                //     {
                //         cout<<a[i][j]<<" ";
                //     }
                //     cout<<endl;
                // }
                // cout<<endl;
            }
            for(int i=1;i<=n;i++)
            {
                a[i][1]=b[i];
            }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    cout<<a[i][j]<<" ";
                }
                cout<<endl;
            }
        }
        void op5()
        {
            int b[105][105];
            memset(b,0,sizeof(b));
            for(int i=1;i<=n;i++)
            {
                int t[105];
                for(int j=1;j<=n;j++)
                {
                    b[i][j]=a[j][i];
                }
                for(int j=1;j<=n;j++)
                {
                    t[n-j+1]=b[i][j];
                }
                for(int j=1;j<=n;j++)
                {
                    b[i][j]=t[j];
                }
            }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    a[i][j]=b[i][j];
                }
            }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    cout<<a[i][j]<<" ";
                }
                cout<<endl;
            }
            cout<<endl;
        }
        void op6()
        {
            int b[105][105];
            memset(b,0,sizeof(b));
            for(int i=1;i<=n;i++)
            {
                int t[105];
                for(int j=1;j<=n;j++)
                {
                    t[n-j+1]=a[i][j];
                }
                for(int j=1;j<=n;j++)
                    b[n-i+1][j]=t[j];
            }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    a[i][j]=b[i][j];
                }
            }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    cout<<a[i][j]<<" ";
                }
                cout<<endl;
            }
            cout<<endl;
        }
        void op7()
        {
            int b[105][105];
            memset(b,0,sizeof(b));
            for(int i=1;i<=n;i++)
            {
                int t[105];
                for(int j=1;j<=n;j++)
                {
                    t[n-j+1]=a[i][j];
                }
                for(int j=1;j<=n;j++)
                {
                    b[j][i]=t[j];
                }
            }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    a[i][j]=b[i][j];
                }
            }
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    cout<<a[i][j]<<" ";
                }
                cout<<endl;
            }
            cout<<endl;
        }
        int main()
        {
            int q;
            cin>>n>>q;
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    cin>>a[i][j];
                }
            }
            while(q--)
            {
                int op;
                cin>>op;
                if(op==1)
                {
                    op1();
                }else if(op==2)
                {
                    op2();
                }else if(op==3)
                {
                    op3();
                }else if(op==4)
                {
                    op4();
                }else if(op==5)
                {
                    op5();
                }else if(op==6)
                {
                    op6();
                }else if(op==7)
                {
                    op7();
                }
            }
            return 0;
        }
        

        279行```

        • 0

          只有1的(2的写了一半) #include<bits/stdc++.h> using namespace std; int a[102][102],b[101]; int n,m,q,z; int main(){ cin>>n>>q; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; } } for(int i=1;i<=q;i++){ cin>>b[i]; }

          for(int i=1;i<=q;i++){
          	//
          	//
          	//
          	//
          	//1
          	if(b[i]==1){
          		for(int j=1;j<=n;j++){
          			a[n+1][j]=a[1][j];
          		}
          		for(int j=2;j<=n;j++){
          			for(int k=1;k<=n;k++){
          				a[j-1][k]=a[j][k];
          			}
          		}
          		for(int j=1;j<=n;j++){
          			a[n][j]=a[n+1][j];
          		}
          		//
          		for(int j=1;j<=n;j++){
          			for(int k=1;k<=n;k++){
          				cout<<a[j][k]<<" "; 
          			}
          			cout<<endl;
          		}
          	cout<<endl;		
          	}
          

          /* // // // if(b[i]==2){ for(int j=n;j>=1;j--){ for(int k=1;k<=n;k++){ a[j+1][k]==a[j][k]; } } for(int j=1;j<=n;j++){ a[1][j]=a[n+1][j]; }

          for(int j=1;j<=n;j++){
          			for(int k=1;k<=n;k++){
          				cout<<a[j][k]<<" ";
          			}
          			cout<<endl;
          		}
          	}
          	//
          	//
          	//
          	*/
          }
          

          return 0; }

          • -1
            @ 2023-5-13 17:45:44

            #include<iostream> using namespace std; long long a,b,c,d,e,k[1009][1009],k1[109][109]; int main() { cin>>a>>b; for(int i=1;i<=a;i++) { for(int j=1;j<=a;j++) { cin>>k[i][j]; } } for(int u=1;u<=b;u++) { cin>>c; if(c1) { for(int i=1;i<=a;i++) { for(int j=1;j<=a;j++) { if(ia)d=1; else d=i+1; k1[i][j]=k[d][j]; } } } if(c2) { for(int i=1;i<=a;i++) { for(int j=1;j<=a;j++) { if(i1)d=a; else d=i-1; k1[i][j]=k[d][j]; } } } if(c3) { for(int i=1;i<=a;i++) { for(int j=1;j<=a;j++) { if(ja)d=1; else d=j+1; k1[i][j]=k[i][d]; } } } if(c4) { for(int i=1;i<=a;i++) { for(int j=1;j<=a;j++) { if(j1)d=a; else d=j-1; k1[i][j]=k[i][d]; } } } if(c5) { for(int i=1;i<=a;i++) { for(int j=1;j<=a;j++) { k1[j][a-i+1]=k[i][j]; } } } if(c6) { for(int i=1;i<=a;i++) { for(int j=1;j<=a;j++) { k1[a-i+1][a-j+1]=k[i][j]; } } } if(c==7) { for(int i=1;i<=a;i++) { for(int j=1;j<=a;j++) { k1[a-j+1][i]=k[i][j]; } } } for(int i=1;i<=a;i++) { for(int j=1;j<=a;j++) { cout<<k1[i][j]<<' '; k[i][j]=k1[i][j]; } cout<<endl; } cout<<endl; } }

            • -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;
              }
              
              • -1
                @ 2023-5-6 20:39:25

                煎蛋

                #include<iostream>
                using namespace std;
                int a[101][101],p,n;
                int b[101],x;
                void print(){
                	for(int i = 1; i <= n; i ++ ){
                		for(int j = 1; j <= n; j ++ ){
                			printf("%d ",a[i][j]);
                		}
                		puts("");
                	}
                	puts("");
                }
                int main(){
                	scanf("%d%d",&n,&p);
                	for(int i = 1; i <= n; i ++ ){
                		for(int j = 1; j <= n; j ++ ){
                			scanf("%d",&a[i][j]);
                		}
                	}
                	for(int i = 1; i <= p; i ++ ){
                		scanf("%d",&x);
                		if(x==1){
                			for(int j = 1; j <= n; j ++ ){
                				b[j]=a[1][j];
                			}
                			for(int j = 1; j < n; j ++ ){
                				for(int k = 1; k <= n; k ++ ){
                					a[j][k]=a[j+1][k];
                				}
                			}
                			for(int j = 1; j <= n; j ++ ){
                				a[n][j]=b[j];
                			}
                			print();
                		}else if(x==2){
                			for(int j = 1; j <= n; j ++ ){
                				b[j]=a[n][j];
                			}
                			for(int j = n; j >= 1; j -- ){
                				for(int k = 1; k <= n; k ++ ){
                					a[j][k]=a[j-1][k];
                				}
                			}
                			for(int j = 1; j <= n; j ++ ){
                				a[1][j]=b[j];
                			}
                			print();
                		}else if(x==3){
                			for(int j = 1; j <= n; j ++ ){
                				b[j]=a[j][1];
                			}
                			for(int j = 1; j < n; j ++ ){
                				for(int k = 1; k <= n; k ++ ){
                					a[k][j]=a[k][j+1];
                				}
                			}
                			for(int j = 1; j <= n; j ++ ){
                				a[j][n]=b[j];
                			}
                			print();
                		}else if(x==4){
                			for(int j = 1; j <= n; j ++ ){
                				b[j]=a[j][n];
                			}
                			for(int j = n; j > 1; j -- ){
                				for(int k = 1; k <= n; k ++ ){
                					a[k][j]=a[k][j-1];
                				}
                			}
                			for(int j = 1; j <= n; j ++ ){
                				a[j][1]=b[j];
                			}
                			print();
                		}else if(x==5){
                			int c[101][101];
                			for(int j = 1; j <= n; j ++ ){
                				for(int k = 1; k <= n; k ++ ){
                					c[j][k]=a[n-k+1][j];
                				}
                			}
                			for(int j = 1; j <= n; j ++ ){
                				for(int k = 1; k <= n; k ++ ){
                					a[j][k]=c[j][k];
                				}
                			}
                			print();
                		}else if(x==6){//懒得写就把操作5写了两遍
                			int c[101][101];
                			for(int j = 1; j <= n; j ++ ){
                				for(int k = 1; k <= n; k ++ ){
                					c[j][k]=a[n-k+1][j];
                				}
                			}
                			for(int j = 1; j <= n; j ++ ){
                				for(int k = 1; k <= n; k ++ ){
                					a[j][k]=c[j][k];
                				}
                			}
                			for(int j = 1; j <= n; j ++ ){
                				for(int k = 1; k <= n; k ++ ){
                					c[j][k]=a[n-k+1][j];
                				}
                			}
                			for(int j = 1; j <= n; j ++ ){
                				for(int k = 1; k <= n; k ++ ){
                					a[j][k]=c[j][k];
                				}
                			}
                			print();
                		}else if(x==7){
                			int c[101][101];
                			for(int j = 1; j <= n; j ++ ){
                				for(int k = 1; k <= n; k ++ ){
                					c[j][k]=a[k][n-j+1];
                				}
                			}
                			for(int j = 1; j <= n; j ++ ){
                				for(int k = 1; k <= n; k ++ ){
                					a[j][k]=c[j][k];
                				}
                			}
                			print();
                		}
                	}
                }
                
                • -2
                  @ 2023-5-5 13:10:05
                  #include<iostream>
                  using namespace std;
                  int n,q,a[110][110],c;
                  void x1(){
                  	int b[110];
                  	for(int i=1;i<=n;i++)b[i]=a[1][i];
                  	for(int i=1;i<n;i++){
                  		for(int j=1;j<=n;j++)a[i][j]=a[i+1][j];
                  	}
                  	for(int i=1;i<=n;i++)a[n][i]=b[i];
                  	for(int i=1;i<=n;i++){
                  		for(int j=1;j<=n;j++)printf("%d ",a[i][j]);
                  		cout<<endl;
                  	}
                  	cout<<endl;
                  }
                  void x2(){
                  	int b[110];
                  	for(int i=1;i<=n;i++)b[i]=a[n][i];
                  	for(int i=n;i>=2;i--){
                  		for(int j=1;j<=n;j++)a[i][j]=a[i-1][j];
                  	}
                  	for(int i=1;i<=n;i++)a[1][i]=b[i];
                  	for(int i=1;i<=n;i++){
                  		for(int j=1;j<=n;j++)printf("%d ",a[i][j]);
                  		cout<<endl;
                  	}
                  	cout<<endl;
                  }
                  void x3(){
                  	int b[110];
                  	for(int i=1;i<=n;i++)b[i]=a[i][1];
                  	for(int i=1;i<=n;i++){
                  		for(int j=1;j<n;j++)a[i][j]=a[i][j+1];
                  	}
                  	for(int i=1;i<=n;i++)a[i][n]=b[i];
                  	for(int i=1;i<=n;i++){
                  		for(int j=1;j<=n;j++)printf("%d ",a[i][j]);
                  		cout<<endl;
                  	}
                  	cout<<endl;
                  }
                  void x4(){
                  	int b[110];
                  	for(int i=1;i<=n;i++)b[i]=a[i][n];
                  	for(int i=1;i<=n;i++){
                  		for(int j=n;j>=2;j--)a[i][j]=a[i][j-1];
                  	}
                  	for(int i=1;i<=n;i++)a[i][1]=b[i];
                  	for(int i=1;i<=n;i++){
                  		for(int j=1;j<=n;j++)printf("%d ",a[i][j]);
                  		cout<<endl;
                  	}
                  	cout<<endl;
                  }
                  void x5(){
                  	int b[110][110];
                  	for(int i=1;i<=n;i++){
                  		for(int j=1;j<=n;j++){
                  			b[j][n+1-i]=a[i][j];
                  		}
                  	}
                  	for(int i=1;i<=n;i++){
                  		for(int j=1;j<=n;j++){
                  			a[i][j]=b[i][j];
                  		}
                  	}
                  }
                  void x6(){
                  	x5();x5();
                  }
                  void x7(){
                  	x5();x5();x5();
                  }
                  int main(){
                  	scanf("%d%d",&n,&q);
                  	for(int i=1;i<=n;i++){
                  		for(int j=1;j<=n;j++)scanf("%d",&a[i][j]);
                  	}
                  	for(int i=1;i<=q;i++){
                  		cin>>c;
                  		if(c==1)x1();
                  		if(c==2)x2();
                  		if(c==3)x3();
                  		if(c==4)x4();
                  		if(c==5){
                  			x5();
                  			for(int i=1;i<=n;i++){
                  			for(int j=1;j<=n;j++)printf("%d ",a[i][j]);
                  			cout<<endl;
                  			}
                  			cout<<endl;	
                  		}
                  		if(c==6){
                  			x6();
                  			for(int i=1;i<=n;i++){
                  			for(int j=1;j<=n;j++)printf("%d ",a[i][j]);
                  			cout<<endl;
                  			}
                  			cout<<endl;	
                  		}
                  		if(c==7){
                  			x7();
                  			for(int i=1;i<=n;i++){
                  			for(int j=1;j<=n;j++)printf("%d ",a[i][j]);
                  			cout<<endl;
                  			}
                  			cout<<endl;	
                  		}
                  	}
                  }
                  /*
                  把最上面一行平移到最下面。
                  把最下面一行平移到最上面。
                  把最左边一行平移到最右边。
                  把最右边一行平移到最左边。
                  顺时针旋转 90°。
                  顺时针旋转 180°。
                  顺时针旋转 270°。
                  3 5
                  1 2 3
                  4 5 6
                  7 8 9
                  1 2 3 4 5
                  */
                  
                  • -4
                    @ 2023-5-5 12:52:02
                    #include<iostream>
                    using namespace std;
                    long long a,b,c,d,e,k[1009][1009],k1[109][109];
                    int main()
                    {
                    	cin>>a>>b;
                    	for(int i=1;i<=a;i++)
                    	{
                    		for(int j=1;j<=a;j++)
                    		{
                    			cin>>k[i][j];
                    		}
                    	}
                    	for(int u=1;u<=b;u++)
                    	{
                    		cin>>c;
                    		if(c==1)
                    		{
                    			for(int i=1;i<=a;i++)
                    			{
                    				for(int j=1;j<=a;j++)
                    				{
                    					if(i==a)d=1;
                    					else d=i+1;
                    					k1[i][j]=k[d][j];
                    				}
                    			}
                    		}
                    		if(c==2)
                    		{
                    			for(int i=1;i<=a;i++)
                    			{
                    				for(int j=1;j<=a;j++)
                    				{
                    					if(i==1)d=a;
                    					else d=i-1;
                    					k1[i][j]=k[d][j];
                    				}
                    			}
                    		}
                    		if(c==3)
                    		{
                    			for(int i=1;i<=a;i++)
                    			{
                    				for(int j=1;j<=a;j++)
                    				{
                    					if(j==a)d=1;
                    					else d=j+1;
                    					k1[i][j]=k[i][d];
                    				}
                    			}
                    		}
                    		if(c==4)
                    		{
                    			for(int i=1;i<=a;i++)
                    			{
                    				for(int j=1;j<=a;j++)
                    				{
                    					if(j==1)d=a;
                    					else d=j-1;
                    					k1[i][j]=k[i][d];
                    				}
                    			}
                    		}
                    		if(c==5)
                    		{
                    			for(int i=1;i<=a;i++)
                    			{
                    				for(int j=1;j<=a;j++)
                    				{
                    					k1[j][a-i+1]=k[i][j];
                    				}
                    			}
                    		}
                    		if(c==6)
                    		{
                    			for(int i=1;i<=a;i++)
                    			{
                    				for(int j=1;j<=a;j++)
                    				{
                    					k1[a-i+1][a-j+1]=k[i][j];
                    				}
                    			}
                    		}
                    		if(c==7)
                    		{
                    			for(int i=1;i<=a;i++)
                    			{
                    				for(int j=1;j<=a;j++)
                    				{
                    					k1[a-j+1][i]=k[i][j];
                    				}
                    			}
                    		}
                    		for(int i=1;i<=a;i++)
                    		{
                    			for(int j=1;j<=a;j++)
                    			{
                    				cout<<k1[i][j]<<' ';
                    				k[i][j]=k1[i][j];
                    			}
                    			cout<<endl;
                    		}
                    		cout<<endl;
                    	}
                    }
                    
                    • 1

                    信息

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