timus 1319. Hotel URAL 解题报告
给一个n,按要求输出n*n的矩阵,矩阵里面填写的是1--n*n
4 2 1 7 5 3 9 8 6
从第一行最后开始填写矩阵,填写完1,填写2,填写2的时候如果i,j还能继续++就斜着循环,知道有一个变量到达n; 然后第一行填满之后,第二行就省下一个2,填写完第二行,第三行就剩下1个了,知道最后一行填写完就好了……
#include <iostream>
#include <algorithm>
#include<cstring>
using namespace std;
int map[110][110];
int n;
int main()
{
cin>>n;
int tot=1;
for(int j=n; j>=1; --j)
{
int ti=1,tj=j;
map[ti][tj]=tot++;
ti++;
tj++;
while(tj<=n&&ti<=n)
{
map[ti][tj]=tot++;
ti++;
tj++;
}
}
for(int i=2; i<=n; ++i)
{
int ti=i,tj=1;
map[ti][tj]=tot++;
ti++;
tj++;
while(tj<=n&&ti<=n)
{
map[ti][tj]=tot++;
ti++;
tj++;
}
}
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
cout<<map[i][j]<<' ';
}cout<<endl;
}
return 0;
}
timus 1319. Hotel URAL 解题报告