NC221786. dd爱旋转
描述
输入描述
第一行一个数n(1≤n≤1000),表示矩阵大小
接下来n行,每行n个数,描述矩阵,其中数字范围为[1,2000]
一下来一行一个数q(1≤q≤100000),表示询问次数
接下来q行,每行一个数x(x=1或x=2),描述每次询问
输出描述
n行,每行n个数,描述操作后的矩阵
示例1
输入:
2 1 2 3 4 1 1
输出:
4 3 2 1
示例2
输入:
2 1 2 3 4 1 2
输出:
3 4 1 2
C 解法, 执行用时: 247ms, 内存消耗: 8504K, 提交时间: 2021-05-28 22:21:43
#include<stdio.h> int main(){ int n,i,j,x,p,y1=0,y2=0,y; scanf("%d",&n); int a[n][n]; for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); scanf("%d",&y); for(i=0;i<y;i++){ scanf("%d",&x); if(x==1){ y1++; } else if(x==2){ y2++; } } y1=y1%2; y2=y2%2; if(y2!=0){ for(i=0;i<n/2;i++) for(j=0;j<n;j++){ p=a[i][j]; a[i][j]=a[n-1-i][j]; a[n-1-i][j]=p; } } if(y1!=0){ for(i=n-1;i>=0;i--){ for(j=n-1;j>=0;j--){ printf("%d ",a[i][j]); } printf("\n"); } } else{ for(i=0;i<n;i++){ for(j=0;j<n;j++){ printf("%d ",a[i][j]); } printf("\n"); } } return 0; }
C++ 解法, 执行用时: 313ms, 内存消耗: 8832K, 提交时间: 2021-07-31 10:53:51
#include<bits/stdc++.h> #define N 1000+5 using namespace std; int mp[N][N],cnt1,cnt2,p,q,n; int main() { cin >> n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin >> mp[i][j]; cin >> p; for(int i=1;i<=p;i++) { cin >> q; if(q==1) cnt1++; else cnt2++; } cnt1%=2; cnt2%=2; for(int i=1;i<=n;i++) { int flag=0; for(int j=1;j<=n;j++) { cout << (flag ? " " : ""); flag=1; cout << mp[abs(cnt2*(n+1)-abs(cnt1*(n+1)-i))][abs(cnt1*(n+1)-j)]; } cout << "\n"; } }