题意:
在半径为n的蜂窝图里面走,要求走过的点不能再走,输出路径,且相邻两个路径方向要尽量不同。
思路:
每次走边上两层。
(直接拿了王老板的图)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef long long ll;
using namespace std;
const int maxn = 1e5 + 7;
pair<int,int>b[10] = {
{
4,2},{
5,3},{
6,4},{
1,5},{
2,6},{
3,1}};
int a[10] = {
3,4,5,6,1,2};
int main() {
int T;scanf("%d",&T);
while(T--) {
int n;scanf("%d",&n);
for(int i = n;i >= 2;i -= 2) {
for(int j = 0;j < 6;j++) {
if(i == 2 && j == 5) printf("3");//2的时候往里面走
else printf("%d",a[j]);
for(int k = 0;k < i - 2;k++) {
printf("%d",b[j].first);
if(j == 5 && k == i - 2 - 1) {
continue;
}
printf("%d",b[j].second);
}
}
if(i - 2 >= 1) printf("4");//下面有数才填
}
printf("\n");
}
return 0;
}