AKSZ-BFS2
2024-05-26 17:57:56
发布于:广东
图论
将状态看作节点
康托展开
P1379 八数码难题
//上面书转化成数组
int ans=0;
for(int i=0;i<9;i++){
int rev=0;//找逆序对
for(int j=i+1;j<9;j++){
rev+=v[i]>v[j];
}
ans+=rev*fc[8-i];//对应的阶乘
}
return ans;//转化为康拓展开数
__int128
无法直接输入输出
范围
快读
__int128 read() {
char arr[30];
__int128 res = 0;
scanf("%s", arr);
for (int i = 1; i <= strlen(arr); i++) {
res *= 10;
res += arr[i]-'0';
}
return res;
}
快写
void print (__int128 num) {
if (num > 9) { print(num / 10); }
putchar(num % 10 + '0');
}
全部评论 1
修改一下 scanf("%s",arr+1); 或者从 0 下标开始
2024-05-29 来自 广东
0
有帮助,赞一个