Mình nghĩ thế này , ma trận vuông n phần tử , phần tử đầu tiên 1 nằm góc trên bên phải , các phần tử tiếp theo như sau 23 là đường chéo ngược thứ nhất , 456 là đường chéo thuận thứ hai , 78910 là đường chéo ngược thứ ba ... tiếp tục đến hết .
N=5
11 10 4 3 1
19 12 9 5 2
20 18 13 8 6
24 21 17 14 7
25 23 22 16 15
Mình nghĩ thế này , ma trận vuông n phần tử , phần tử đầu tiên 1 nằm góc trên bên phải , các phần tử tiếp theo như sau 23 là đường chéo ngược thứ nhất , 456 là đường chéo thuận thứ hai , 78910 là đường chéo ngược thứ ba ... tiếp tục đến hết .
em khong hieu, anh noi ro di, lam sao phan tu dau tien nam ben goc phai duoc ?
Lưu ý: Viết tiếng Việt có dấu khi gửi bài viết của mình lên diễn đàn.
Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 28-01-2008 lúc 02:39 PM. Lý do: Nhắc nhở viết không dấu
Nó giống giống vậy đó ... Tui là G .
Muốn tạo 1 ma trận như thế bạn đi theo đường zic zac như hình rùi điền số vào thôi . Bạn thử suy nghĩ đi . Có gì ko ra thì post câu hỏi lên nhe .
nhung cai so 1 em khong de o cuoi cung duoc, lam hoai ma no hong ra, chi cho em xin cai code.
Có rảnh thì kiếm bài khác làm, làm mấy bài này chỉ tổ nhức đầu![]()
PHP Code:#include <iostream>
#include <vector>
#include <iomanip>
int main()
{
const int mSize = 5;
std::vector< std::vector<int> > grid(mSize, vector<int>(mSize, 0));
int mark = mSize*mSize;
for(int i = 0; i < (mSize - 1); ++i)
{
if(i % 2)
for(int j = 0; j <= i; ++j)
grid[j][i - j] = mark--;
else
for(int j = i; j >= 0; --j)
grid[j][i - j] = mark--;
}
for(int i = mSize - 1; i >= 0; --i)
{
if((i + mSize + 1) % 2)
for(int j = 0; j <= i; ++j)
grid[mSize - 1 - j][mSize - 1 - (i-j)] = mark--;
else
for(int j = i; j >= 0; --j)
grid[mSize - 1 - j][mSize - 1 - (i-j)] = mark--;
}
for(int i = 0; i < mSize; ++i){
for(int j = 0; j < mSize; ++j)
std::cout << std::setw(2) << grid[i][j] << ' ';
std::cout << '\n';
}
return 0;
}