数组转置的问题
- C/C++ code
#include <iostream>#include<cstdlib>using namespace std;void main(int argc,char*argv[]){ int a[4][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}}; int i=0,j=0,tmp=0; for(i=0;i<4;i++) { for(;j<4;j++) { tmp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=tmp; } j=i+1; } for(i=0;i<4;i++) { for(j=0;j<4;j++) { cout<<a[i][j]<<" "; } cout<<endl; }}
实现一个4*4的数组的转置为什么第二个for处不用加j=0,而是在后面用j=i+1.
[解决办法]
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
转置时只需要将上半角和下半角的数据对换就行了,所以每一行,只需要将该行以后的数字进行转置,所以j不是从0开始,而是从j=i+1开始。
[解决办法]
[解决办法]
你画一个3*3的来转下就好理解了