Mine Number
来源:互联网 发布:淘宝店铺0信誉出售 编辑:程序博客网 时间:2024/06/16 06:29
我的心愿是世界和平!
题目描述:给定一个矩阵,其中的数字(0-5)代表本身及其四周(上、下、左、右)的'*'的个数,其他用'.'填充。(只有一种答案)样例:2 5 6 001110 013431 014541 013431 001110 2 4 1111 2332 //Case 1: ...... ..***. ..***. ..***. ...... Case 2: .... ****
#include<cstdio>#include<iostream>using namespace std;char Map[25][25];int m,n,flag,Num[25][25];int Found(int x,int y){ if(Num[x][y]<=0) return 0; if(x-1>=0&&Num[x-1][y]<=0) return 0; if(y-1>=0&&Num[x][y-1]<=0) return 0; if(x+1<m&&Num[x+1][y]<=0) return 0; if(y+1<n&&Num[x][y+1]<=0) return 0; return 1;}void Change(int x,int y){ Num[x][y]--; if(x-1>=0) Num[x-1][y]--; if(y-1>=0) Num[x][y-1]--; if(x+1<m) Num[x+1][y]--; if(y+1<n) Num[x][y+1]--;}void Back(int x,int y){ Num[x][y]++; if(x-1>=0) Num[x-1][y]++; if(y-1>=0) Num[x][y-1]++; if(x+1<m) Num[x+1][y]++; if(y+1<n) Num[x][y+1]++;}void Dfs(int x,int y){ if(flag)//已输出要求矩阵. { return ; } if(x==m) { int t=0; for(int i=0; i<n; i++) { if(Num[x-1][i]!=0) { t=1; break; } } if(t)//现在的Map数组不符合要求. { return ; } else { for(int i=0; i<m; i++) { for(int j=0; j<n; j++) { cout<<Map[i][j]; } cout<<endl; } flag=1; return ; } } if(y==n) { Dfs(x+1,0); return ; } if(x==0) { if(Found(x,y))//判断是否四周及本身都大于1. { Map[x][y]='*'; Change(x,y);//将四周及本身减1. Dfs(x,y+1); Back(x,y);//将四周及本身加1. } Map[x][y]='.'; Dfs(x,y+1); } else { if(Num[x-1][y]==0) { Map[x][y]='.'; Dfs(x,y+1); } else { if(Num[x-1][y]==1) { if(Found(x,y)) { Map[x][y]='*'; Change(x,y); Dfs(x,y+1); Back(x,y); } } } }}int main(){ int T; char c; cin>>T; for(int o=1; o<=T; o++) { printf("Case %d:\n",o); cin>>m>>n; for(int i=0; i<m; i++) { for(int j=0; j<n; j++) { cin>>c; Num[i][j]=c-'0'; } } flag=0; Dfs(0,0); } return 0;}
阅读全文
0 0
- Mine Number
- sdut2410 Mine Number
- 山东2012年省赛题之Mine Number
- 山东省第三届省赛(Mine Number)
- SDUT:1143 Mine Number(二进制枚举)
- SDUT 2410 Mine Number DFS+回溯 (扫雷)
- 第三届 山东省ACM省赛 Mine Number
- MINE
- MINE
- mine
- Mine
- 2013山东省第三届ACM省赛 Mine Number
- [2012山东省第三届ACM大学生程序设计竞赛]——Mine Number
- Mine Number(2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛)
- 2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛——Mine Number
- SDUT 2410 Mine Number 2012年山东省第三届ACM大学生程序设计竞赛题
- [2012山东省第三届ACM大学生程序设计竞赛]——Mine Number
- Mine Sweeper
- python 匿名函数 lambda
- ORM框架理解
- 安装memcache,配置php中memcache拓展
- 接触学习linux系统服务搭建两年来的心得
- 了解HTTP (每天看十页更新)
- Mine Number
- 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
- Numpy-ufunc函数
- Unix系统-myBatis+Spring+SpringMVC的CRUD-分页
- PAT 1007. 素数对猜想 (20) JAVA
- React-Native学习笔记(二)
- iOS 如何获取手机外网IP地址(附内网IP地址)
- 正则验证
- serialVersionUID的作用