本文共 758 字,大约阅读时间需要 2 分钟。
原题链接:
分类:回溯法 备注:模拟,水题注意一下 不填字母的地方一定要是’.’,估计测试数据可能有填不满整个n*n块格子的情况。
#includeusing namespace std;int n,k,num[25];char g[25][25],ans[25][25];inline char read(){ char ch=getchar(); while(ch==' '||ch=='\n')ch=getchar(); return ch;}inline bool check(int x,int y,int w,int h){ int cnt=0; for(int i=x;i 1)return false; if(g[i][j]-'0'!=w*h)return false; } } return cnt==1;}bool dfs(int pos,int now){ if(now==k)return true; while(isalpha(ans[pos/n][pos%n]))pos++; for(int w=1;w<=9;w++) for(int h=1;h<=9;h++){ if(w*h>9)continue; int x=pos/n,y=pos%n; if(x+h>n||y+w>n)break; if(check(x,y,w,h)){ for(int i=x;i
转载地址:http://epel.baihongyu.com/