题目
思路
通过观察发现,奇数行向上填,偶数行向下填
代码
#include <bits/stdc++.h>
#define maxx 1010
typedef long long ll;
using namespace std;
int main()
{
int n;
cin >> n;
getchar();
string ss;
getline(cin, ss);
// cout << ss << endl;
int cnt = 0;
char ans[maxx][maxx];
int len = ss.size();
for (int i = 0; i < n; ++i)
{
for (int j = i; j >= 0; --j)
{
if (i % 2 == 1)
ans[i - j][j] = (char) ss[cnt % len];
else
ans[j][i - j] = (char) ss[cnt % len];
cnt++;
}
}
for (int i = 1; i < n; ++i)
{
for (int j = i; j < n; ++j)
{
if ((i + n) % 2 == 1)
ans[i + n - 1 - j][j] = (char) ss[cnt % len];
else
ans[j][i + n - 1 - j] = (char) ss[cnt % len];
cnt++;
}
}
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
cout << ans[i][j];
}
cout << endl;
}
return 0;
}
总结
就是找规律然后输出的一道题,但是写的代码简不简洁,看的是思路请不清晰,有没有正确的思路,一开始的思路不清晰,规律找的不对,所以代码写起来很苦难