ai2813-画家问题-回溯解法C语言
来源:互联网 发布:淘宝的免费开店在哪里 编辑:程序博客网 时间:2024/06/05 06:43
方法粗陋,时间略长,还望指教。
#include <stdio.h>#include <stdlib.h>int mintimes=225;int nowtimes=0;void collor(int*a){ *a?(*a=0):(*a=1);}void change(int*now,int size){ collor(now); collor(now+1); collor(now-1); collor(now+size+2); collor(now-size-2);}void searchf(int i,int size,int*wall,int*record)//穷举第一行i~n的所有可能{ void paint(int*wall,int n,int*record); if(i<=size) { searchf(i+1,size,wall,record); change(wall+size+2+i,size); *(record+(size+2)+i)=1; searchf(i+1,size,wall,record); change(wall+size+2+i,size); *(record+(size+2)+i)=0; } else paint(wall,size,record);}void paint(int*wall,int n,int*record){int flag=0,i,j; for(i=1;i<n;i++) { for(j=1;j<n+1;j++) { if(*(wall+i*(n+2)+j)==0) { change(wall+(i+1)*(n+2)+j,n); *(record+(i+1)*(n+2)+j)=1; nowtimes++; } } } for(i=1;i<n+1;i++) { flag+=*(wall+n*(n+2)+i); nowtimes+=*(record+(n+2)+i); } if(flag==n&&nowtimes<mintimes) mintimes=nowtimes; for(i=2;i<=n;i++) { for(j=1;j<n+1;j++) { if(*(record+i*(n+2)+j)==1) { change(wall+i*(n+2)+j,n); *(record+i*(n+2)+j)=0; } } } nowtimes=0;}int main(){ int n,i,j; scanf("%d",&n); int paint[n+2][n+2],record[n+2][n+2]; for(i=1;i<n+1;i++) for(j=1;j<n+1;j++) record[i][j]=0; char wall[n+2][n+2]; for(i=1;i<n+1;i++) { scanf("%s",&wall[i][1]); for(j=1;j<n+1;j++) (wall[i][j]=='w')?(paint[i][j]=0):(paint[i][j]=1); } searchf(1,n,paint[0],record[0]); (mintimes>200)?(printf("inf")):(printf("%d",mintimes)); return 0;}
0 0
- ai2813-画家问题-回溯解法C语言
- 迷宫问题C语言解法
- 八皇后问题回溯解法
- N皇后问题回溯解法
- 回溯算法解迷宫问题(C语言)
- 回溯算法解迷宫问题(C语言)
- 回溯算法----C语言 迷宫问题
- 八皇后问题-回溯法-c语言
- 回溯法-旅行售货员问题(C语言)
- C语言回溯法装载问题
- c语言素数环问题(回溯)
- C语言回溯法九宫格数独问题
- c语言三阶幻方问题(回溯)
- N皇后问题c语言解法
- C语言经典弱智问题解法整理
- C语言魔板问题递归解法
- 旅行商问题的回溯解法
- C++ 迷宫问题的回溯解法
- Android自定义加载动画库zLoading
- 算法思想汇总(日后补充)
- 欢迎使用CSDN-markdown编辑器
- 【php学习之路】水印功能的基本实现
- 内部服务器-500错误问题
- ai2813-画家问题-回溯解法C语言
- 无聊使用python画一个笛卡尔心
- replace替换不成功问题
- marchine learning 之 correlation
- Ubuntu- 彻底干净卸载MySQL、Apache2、Php的方法
- Andorid 开发必备之轻松制作发布自己的依赖库。
- Windows下 DirectX SDK 配置检验
- 关于spring beans.xml 有时候出现的标签无法识别
- 小白初接触centos6.8网络配置