注:最近这一系列ACM的内容,都是2年多之前的代码,自己回顾一下。
Description
矩阵中填数,当给出 N*N 的矩阵,要求用程序按蛇形填入下列形式的数。
例如N = 3时
蛇形矩阵如下:
1 3 4
2 5 8
6 7 9
例如N = 5时
蛇形矩阵如下:
1 3 4 10 11
2 5 9 12 19
6 8 13 18 20
7 14 17 21 24
15 16 22 23 25
Input
输入
单组测试样例,一个整数N(N < 10)
Output
输出该矩阵(每个数字后面跟一个空格,包括每行最后一个数字后面也跟空格)
Sample Input
5
Sample Output
1 3 4 10 11
2 5 9 12 19
6 8 13 18 20
7 14 17 21 24
15 16 22 23 25
Source
Sapphire@Buptacm
矩阵中填数,当给出 N*N 的矩阵,要求用程序按蛇形填入下列形式的数。
例如N = 3时
蛇形矩阵如下:
1 3 4
2 5 8
6 7 9
例如N = 5时
蛇形矩阵如下:
1 3 4 10 11
2 5 9 12 19
6 8 13 18 20
7 14 17 21 24
15 16 22 23 25
Input
输入
单组测试样例,一个整数N(N < 10)
Output
输出该矩阵(每个数字后面跟一个空格,包括每行最后一个数字后面也跟空格)
Sample Input
5
Sample Output
1 3 4 10 11
2 5 9 12 19
6 8 13 18 20
7 14 17 21 24
15 16 22 23 25
Source
Sapphire@Buptacm
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n[11][11] = {0};
int N;
int num = 1;
int a = 1, b = 0, c;
cin >> N;
for (int i = 1; i <= 2*N - 1; i++)
{
if (i % 2 == 1)
{
if (i <= N)
b++;
else
a++;
n[a][b] = num;
num++;
c = N - 1 - abs(N - i);
for (int j = 1; j <= c; j++)
{
a++;
b--;
n[a][b] = num;
num++;
}
}
else
{
if (i <= N)
a++;
else
b++;
n[a][b] = num;
num++;
c = N - 1 - abs(N - i);
for (int j = 1; j <= c; j++)
{
a--;
b++;
n[a][b] = num;
num++;
}
}
}
for (int i = 1; i<= N; i++)
{
for (int j = 1; j <= N; j++)
cout << n[i][j] << " ";
cout << endl;
}
// system("pause");
return 0;
}