题目大意:。。还是数独,不同的是原先的九宫格约束条件变为了给定的任意形状。。。
我们跑一遍floodfill 得出每一个格子属于哪一个形状
然后就是裸的数独了
这题T<=2500 绝对不能开动态 清则TLE 不清MLE 只能数组模拟
好不容易改完了 尼玛 交上去就WA
最后发现当找到一组解之后 一定要把当前的数独转移到ANS数组中 否则就会被覆盖 导致输出时错误
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
struct abcd{
int l,r,u,d;
int x,y,num;
int bottom;
void del();
void restore();
}table[4000];
int head,tot,stack[4000],top;
int m,n,cnt,flag,map[9][9],belong[9][9],input[9][9],ans[9][9];
void del_column(int pos)
{
int i,j;
for(i=table[pos].u;i;i=table[i].u)
{
for(j=table[i].l;j;j=table[j].l)
table[j].del();
for(j=table[i].r;j;j=table[j].r)
table[j].del();
table[i].del();
}
table[pos].del();
}
inline void output()
{
int i,j;
for(i=0;i<9;i+