3 条题解

  • 1
    @ 2025-3-19 13:32:31
    #include<bits/stdc++.h>
    using namespace std;
    int a[101][101];
    queue<int> q;
    void d() {
    	int n=q.front();
    	q.pop();
    	q.push(n);
    }
    int main() {
    	int m;
    	cin>>m;
    	for(int i=1; i<=m; i++) {
    		int x;
    		cin>>x;
    		q.push(x);
    		cout<<x<<" ";
    	}
    	cout<<endl;
    	for(int i=1; i<=m; i++) { 
    	d(); 
    		for(int j=1; j<=m; j++) {
    			a[i][j]=q.front();
    			d();
    		}
    
    	}
    	for(int i=1; i<m; i++) {
    		for(int j=1; j<=m; j++) {
    			cout<<a[i][j]<<" ";
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    
    
    • 1

      本题关键为注意到二维数组第i行第j列为所输入原数组的第i+j-1项(i+j-1 <= m时),

      i+j-1>m是发现其有周期为m,故将i+j-1不断做**-m的操作直到其小于等于m**;

      代码如下:

      #include<bits/stdc++.h>
      using namespace std;
      int a[10010],p[100][100];
      int main()
      {
          int m,f;
          cin>>m;
          for(int i=1;i<=m;i++)
          {
              cin>>a[i];
          }
          for(int i=1;i<=m;i++)
          {
              for(int j=1;j<=m;j++)
          {
              f=i+j-1;
              if(f<=m)
              {
                  p[i][j]=a[f];
              }
              else
              {
                  while(f>m)
                  {
                      f-=m;
                  }
                  if(f<=m)
                  {
                      p[i][j]=a[f];
                  }
              }
          }
          }
          for(int i=1;i<=m;i++)
          {
              for(int j=1;j<=m;j++)
              {
                  cout<<p[i][j]<<' ';
              }
              cout<<'\n';
          }
          return 0;
      }
      
      • 0
        @ 2024-12-21 13:06:23

        #include<bits/stdc++.h> using namespace std; int a[1000000]; int zhuan(int a[10000],int k,int n) {

        } int main() { int n,j; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; for(int k=1;k<=n-1;k++) { j=a[0]; for(int i=1;i<n;i++) a[i-1]=a[i]; a[n-1]=j; for(int i=0;i<n;i++) { cout<<a[i]<<" "; } cout<<endl; } return 0; }

        • 1

        信息

        ID
        128
        时间
        1000ms
        内存
        256MiB
        难度
        6
        标签
        递交数
        23
        已通过
        11
        上传者