我想在一個二維數組上對角地迭代。我用[N*N]
大小的普通陣列,而不是使用[N][N]
陣列。之後,我製作了索引。 這是我要打印(例如)爲什麼我得到訪問衝突運行時錯誤?
1 3 6 10
2 5 9 13
4 8 12 15
7 11 14 16
的結果應該是這樣的數組:
int n, temp[2], nums[100 + 10];
cin >> n;
for (int i = 0; i < n * n; i++)
cin >> nums[i];
temp[0] = temp[1] = 0;
for (int i = 0, cnt = 0; i < n; i++, cnt += 5) {
temp[1] = temp[0];
for (int j = 0; j <= i; j++) {
cout << nums[temp[1]] << " ";
temp[1] -= n - 1;
}
temp[0] += n;
}
temp[0] -= n - 1;
for (int i = n - 2, cnt = temp[0]; i >= 0; i--, cnt -= 5) {
temp[1] = temp[0];
for (int j = 0; j <= i; j++) {
cout << nums[temp[1]] << " ";
temp[1] -= n - 1;
}
temp[0] += 1;
}
:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
我用下面的代碼完成我認爲它應該工作,但我不知道爲什麼我訪問衝突運行時錯誤。 謝謝。
訪問衝突發生在哪裏? –
@RaymondChen不幸的是我不知道!這是一個ACM問題,該網站告訴我,您在測試用例#4中存在訪問衝突,我不知道測試用例是什麼。這是問題的鏈接: http://acm.timus.ru/problem.aspx?space=1&num=1313 – Rasool
它在這裏工作http://ideone.com/eW1Yrx與您的輸入 –