include
using namespace std;
// 函數rotateLeft:矩陣循環左移
// 參數:a-100*100的二維數組,用來存儲n行n列的數組(n<100),存儲在其n-1行和n-1列,
// m-循環左移的位數(0<m<n)
// 返回值:無,循環左移的結果寫入原二維數組中
// 說明:傳遞多維數組時,形式參數中,除了第一維外,其它維的大小必須給出
// 方便編譯器計算每個數組元素的地址
void rotateLeft(int a[][100],int n,int m);
int main()
{
int a[100][100]; // 定義存儲二維數組的空間
int n, m;
cin >> n >> m; // 輸入n和m
// 輸入n*n的矩陣,存儲在數組a的~n-1行和~n-1列
int i, j;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
cin >> a[i][j];
// 循環左移
// 說明:傳遞多維數組時,實在參數只需要給出數組名就可以了
rotateLeft(a,n,m);
// 輸出循環右移的結果
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
cout << " " << a[i][j];
cout << endl;
}
return 0;
}
void rotateLeft(int a[][100],int n,int m)
{
// 請在此添加代碼,實現函數rotateLeft
/********** Begin *********/
int b[n][n]={0},i,j,k;
//處理左半部分
for(i=0,j=m;j<n;i++,j++){
for(k=0;k<n;k++){
b[k][i]=a[k][j];
}
}
//處理右半部分
for(j=0;i<n;i++,j++){
for(k=0;k<n;k++){
b[k][i]=a[k][j];
}
}
//處理原來的數組
for(i=0;i<n;i++){
for(j=0;j<n;j++){
a[i][j] = b[i][j];
}
}
/********** End **********/
}