我有這樣的矩陣:
1 2 3 4 5
6 7 8 9 A
B C D E F
0 1 2 3 4
而且我希望它在一行打印如下:
1 6 2 B 7 3 0 C 8 4 1 D 9 5 2 E A 3 F 4.
最簡單的方法是怎麼做的?
我有這樣的矩陣:
1 2 3 4 5
6 7 8 9 A
B C D E F
0 1 2 3 4
而且我希望它在一行打印如下:
1 6 2 B 7 3 0 C 8 4 1 D 9 5 2 E A 3 F 4.
最簡單的方法是怎麼做的?
使用嵌套循環。 外環超過(0,0)
內部循環覆蓋i和j的所有有效組合,總和距離。
for(int i = 0; i < matrix.cx; i++) {
for(int j = 0; j < matrix.cy; j++) {
std::cout << matrix[i][j] << ' ';
}
// comment following line to make matrix printed in one line
std::cout << std::endl;
}
如果在陣列基質店這樣的:
#include <stdio.h>
int main(void) {
char matrix[4][5] = {{'1','2','3','4','5'},
{'6','7','8','9','A'},
{'B','C','D','E','F'},
{'0','1','2','3','4'}};
int cols = 5;
int rows = 4;
int i = 0;
for(i = 0; i < cols + rows -2 ; i++){
int j = 0;
while(j <= i){
int k = i-j;
if(k < rows && j < cols){
printf("%c ",matrix[k][j]);
}
j++;
}
}
}
我只是從0一直到總行和列的索引的(在這種情況下,從0到7) 總索引的每個值,列和行之和等於當前總索引的打印值,如果索引可用(小於列和行的索引),則打印它,否則轉義。 例如:
0 - 00
1 - 10 01
2 - 20 11 02
順便說一句,好像需要比別人
至少試着解釋你的代碼。 – KillianDS
#include <iostream>
int main(int argc, char **argv)
{
char m[4][5] = { { '1', '2', '3', '4', '5' },
{ '6', '7', '8', '9', 'A' },
{ 'B', 'C', 'D', 'E', 'F' },
{ '0', '1', '2', '3', '4' } };
for (int i = 0; i <= 3; ++i) {
for (int j = 0; j <= i; ++j) {
std::cout << m[i - j][j] << " ";
}
}
for (int i = 4; i <= 7; ++i) {
for (int j = i - 3; j <= 4; ++j) {
std::cout << m[i - j][j] << " ";
}
}
std::cout << std::endl;
return 0;
}
更多的循環(如果我假設你存儲字符在每個小區)我會建議爲矩陣vector<vector<char> >
表示。一個重要的觀察結果是,對於每個對角線,i和j指數的總和爲常數,對於對角線,這個總和增加1。
注意到這一點後,您在x座標上的和和內循環上進行外循環。注意不要掉出矩陣! 現在最簡單的C++的方法來打印矩陣將是:
vector<vector<char> > a;
for(unsigned sum = 0; sum < a.size() + a[0].size(); ++sum) {
for (unsigned j = 0; j <= sum && j < a[0].size(); ++j) {
unsigned i = sum - j;
if (i >= a.size()) {
continue;
}
cout << a[i][j] << " ";
}
}
人們可以通過改變起始值(這樣繼續的條件是不正確的),優化了j中的週期,但代碼將是更難理解。另一個我沒有解決的問題是即使在最後一個元素之後仍然會打印一個空白。這是另一個需要添加的檢查。
希望這會有所幫助。
你是如何保存它?你的代碼是什麼樣的? [你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – jbowes
你的矩陣是如何表示的?請提供一些代碼。 – Xyand
'print mat [0] [0];印花墊[1] [0];打印墊[0] [1];印花墊[2] [0]; ... print mat [3] [4];' – pmg