CCF-201503-1-图像旋转

85 阅读1分钟

题目信息

解题思路:按照a[i++][j++]顺序存储,按照a[jmax--][i++]顺序输出,但因为在main()函数中开a[1000][1000]二维数组会炸,所以要使用vector容器 或者在main()函数外建立a[1001][1001]数组(见代码二);

代码如下:

代码1:

#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;

int main(){
	int n,m,pp;
	vector<int>b;
	vector< vector<int> >a;
	cin>>n>>m;
	 for(int i=0;i<n;i++){
	 	b.clear();
	 	for(int j=0;j<m;j++){
	 		cin>>pp;
	 		b.push_back(pp);
		 }
		 a.push_back(b);
	 }
	 for(int j=m-1;j>=0;j--){
	 	for(int i=0;i<n;i++){
	 		cout<<a[i][j]<<" ";
		 }
		 cout<<endl;
	 }
	return 0;
}

代码二:

#include<cstdio>
#include<iostream>
using namespace std;

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