QQ扫一扫联系
题目保证输入的n与m均为不超过 1008 的正整数。
#include <iostream> using namespace std; int n,m,a[1000000],b[1000000]; int main() { cin>>n>>m; for(int i=0;i<n*m;++i) cin>>a[i]; for(int i=0;i<n*m;++i) b[i%m*n+n-i/m-1]=a[i]; for(int i=0;i<n*m;++i) { cout<<b[i]<<" "; if((i+1)%n==0) cout<<endl; } return 0; }
该程序的时间复杂度为0(nm)。
注意到第6行、第8行、第 10行的 for 循环控制部分完全一样,所以这三个循环可以合并为一个 for 循环。
当n和m为某些特定值时,会发生数组越界的情况。
第9行的代码有可能导致数组b的同一个下标被赋值多次。
如果输入为:3 4 1 7 2 4 3 6 1 8 5 3 2 9,则b[8]的值为
1
2
9
8
第 13 行的代码会执行( )次
m
n
n-1
m-1