P1074 靶状数独(优化)
来源:互联网 发布:tensorflow 实际应用 编辑:程序博客网 时间:2024/06/06 02:41
题见洛谷
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>#define LL long longusing namespace std;bool lief[10][10],hangf[10][10],gef[10][10];int ans=-1,can[10][10],n=0,a[10][10];//can[][]用来记此点能放几种数int quan[10][10]={ 0,0,0,0,0,0,0,0,0,0, 0,6,6,6,6,6,6,6,6,6, 0,6,7,7,7,7,7,7,7,6, 0,6,7,8,8,8,8,8,7,6, 0,6,7,8,9,9,9,8,7,6, 0,6,7,8,9,10,9,8,7,6, 0,6,7,8,9,9,9,8,7,6, 0,6,7,8,8,8,8,8,7,6, 0,6,7,7,7,7,7,7,7,6, 0,6,6,6,6,6,6,6,6,6,};int ge[10][10]={ 0,0,0,0,0,0,0,0,0,0, 0,1,1,1,2,2,2,3,3,3, 0,1,1,1,2,2,2,3,3,3, 0,1,1,1,2,2,2,3,3,3, 0,4,4,4,5,5,5,6,6,6, 0,4,4,4,5,5,5,6,6,6, 0,4,4,4,5,5,5,6,6,6, 0,7,7,7,8,8,8,9,9,9, 0,7,7,7,8,8,8,9,9,9, 0,7,7,7,8,8,8,9,9,9,};bool flag(int x,int y,int k){ if(!gef[ge[x][y]][k]&&!hangf[x][k]&&!lief[y][k]) return true; return false;}void dfs(int k){ if(k>n) { int tot=0; for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) if(!a[i][j]) return; else tot+=a[i][j]*quan[i][j]; ans=max(ans,tot); return; } else { int minn=99999999,nx,ny; memset(can,0,sizeof(can)); for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) if(!a[i][j]) { for(int x=1;x<=9;x++) if(flag(i,j,x)) can[i][j]++; if(minn>can[i][j]) { minn=can[i][j]; nx=i;ny=j;//找到最小can的,先来填 } if(minn==1)break; } if(minn==0)return;//无解 if(minn==99999999) { int tot=0; for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) if(!a[i][j]) return; else tot+=a[i][j]*quan[i][j]; ans=max(ans,tot); return; } for(int i=1;i<=9;i++) if(flag(nx,ny,i)) { hangf[nx][i]=true; lief[ny][i]=true; gef[ge[nx][ny]][i]=true; a[nx][ny]=i; dfs(k+1); hangf[nx][i]=false; lief[ny][i]=false; gef[ge[nx][ny]][i]=false; a[nx][ny]=0; } }}int main(){ for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) { scanf("%d",&a[i][j]); if(!a[i][j])n++; else { lief[j][a[i][j]]=true; hangf[i][a[i][j]]=true; gef[ge[i][j]][a[i][j]]=true; } } dfs(1); printf("%d",ans); return 0;}
0 0
- P1074 靶状数独(优化)
- P1074 靶形数独(TLE 75)
- P1074 靶形数独(搜索+剪枝)
- [P1074]靶形数独
- P1074 靶形数独
- P1074 靶形数独
- 洛谷 P1074 靶形数独
- 洛谷 P1074 靶形数独
- 洛谷 P1074 靶形数独
- 洛谷 P1074 靶形数独
- 洛谷 P1074 靶形数独
- 搜索-洛谷P1074 靶形数独
- 洛谷P1074 [Noip2009]靶形数独
- 洛谷 P1074 CODE[VS] 1174 [NOIP2009 T4] 靶形数独
- 约瑟夫问题(优化优化再优化)
- 约瑟夫问题(优化优化再优化)
- 性能优化(CSS优化)
- mysql优化(2)索引优化 配置优化
- 输入子系统的框架
- mac电脑shell中的字符乱码
- 测试开发之路--聊聊自动化的打开方式
- css3 3D按钮
- Myeclipse连接 数据库MySql
- P1074 靶状数独(优化)
- linux安装git
- C++动态内存分配
- Vector 是线程安全的?
- Spring MVC @CookieValue注解
- Prism 订阅事件 IEventAggregator 说明
- Android开发的你必须要掌握的热门开源框架
- 欢迎使用CSDN-markdown编辑器
- NYOJ47 过河问题