内存限制:128 MiB时间限制:1000 ms标准输入输出
题目描述
如图所示形状的八个方格中填入1-8这八个数字,使得相邻的和对角线上的数字之差不为1,编程求解按照方格顺序从小到大排序后的第k种填法方案。
输入格式
1个整数K,保证有合法输出结果。
输出格式
第k种方案按照方格编号从小到大的顺序输出,中间有1个空格间隔。
样例
样例输入
1
样例输出
2 5 8 6 3 1 4 7
数据范围与提示
注意对角线要考虑b1和b2,b4之间,b8和b4,b7之间的关系
典型的枚举算法,题目已经提示了您
AC代码:
#include<bits/stdc++.h>//万能头
/*等价于:
#include<algorithm>
#include<iostream>
#include<cmath>*/
using namespace std;//申请标准命名空间
int a[4][8],sum=1,o;//定义变量,o用于输入,sum用于计数求和
void perm(int list[], int k, int m)//用递归算法来计算
{
if(k==m)
{
if(abs(list[1]-list[4])!=1&&abs(list[0]-list[2])!=1&&abs(list[2]-list[5])!=1&&abs(list[5]-list[7])!=1&&abs(list[3]-list[6])!=1&&abs(list[1