站外题求助
  • 板块灌水区
  • 楼主ptsxqxy
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/4/28 21:32
  • 上次更新2024/4/29 12:43:51
查看原帖
站外题求助
944176
ptsxqxy楼主2024/4/28 21:32

变换阵型

题目描述

盛隆同学刚学完C++的二维数组和函数部分,于是他自己写了2个函数对二维数组进行练习。两个函数如下:

int n, a[1005][1005];
// 注意,这里的n和数组a是全局变量
void f1() {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= i; j++) {
            int t = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = t;
        }
    }
}
void f2() {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n - i + 1; j++) {
            int t = a[i][j];
            a[i][j] = a[n-j+1][n-i+1];
            a[n-j+1][n-i+1] = t;
        }
    }
}

现给出一个n*n 的矩阵a ,矩阵的行列下标均从1开始,也就是说矩阵中的第i 行第j列的元素保存在a[i][j]中。

现在盛隆同学想要对矩阵a 进行Q次操作,操作共有三种,参数分别如下:

1:调用函数f1。

2:调用函数f2。

3 x y:输出矩阵a目前第x行第y列的元素。

输入格式

第一行两个整数n,Q,表示矩阵的大小和操作的次数。

接下来n行,每行n个整数,表示矩阵a。

接下来Q行,每行一个操作,操作格式如题目描述。

输出格式

对于每个操作 3 x y,输出一行一个整数,表示矩阵 目前第x行第y列的元素。

样例数据

输入样例 #1

3 3

1 2 3

4 5 6

7 8 9

1

2

3 1 2

输出样例 #1

8

原矩阵经过2次操作后的矩阵如下:

9 8 7

6 5 4

3 2 1 所以a[1][2]=8。

输入样例 #2

4 4

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

1

3 1 2

2

3 2 3

输出样例 #2

5

10

数据范围

对于20%的数据,没有操作一和操作二,只有操作三。

对于50%的数据,1<=n<=500,1<=Q<=100。

对于100%的数据,1<=n<=1000,1<=Q<=10000,1<=a[i][j]<=10的9次方,1<=x,y<=n。

我的代码有五个测试点超时:

#include<bits/stdc++.h>
using namespace std;
int n, a[1005][1005];
// 注意,这里的n和数组a是全局变量
void f1() {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= i; j++) {
            int t = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = t;
        }
    }
}
void f2() {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n - i + 1; j++) {
            int t = a[i][j];
            a[i][j] = a[n-j+1][n-i+1];
            a[n-j+1][n-i+1] = t;
        }
    }
}
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];
    int k,x,y;
    while(Q--){
    	cin>>k;
    	if(k==1) f1();
    	else if(k==2) f2();
    	else{
    		cin>>x>>y;
    		cout<<a[x][y]<<endl;
		}
	}
    return 0;
}

请问怎么改?

2024/4/28 21:32
加载中...