标签:nod span code set des while sage 空白 process
问题 1096: Minesweeper
时间限制: 1Sec 内存限制: 64MB 提交: 581 解决: 254
4 4 *... .... .*.. .... 3 5 **... ..... .*... 0 0
Field #1: *100 2210 1*10 1110 Field #2: **100 33200 1*100
#include<cstdio> #include<iostream> #include<vector> #include<string.h> using namespace std; char pic[1001][1001]; int vis[1001][1001]; int dx[]={0,0,1,-1,1,-1,1,-1}; int dy[]={1,-1,0,0,1,-1,-1,1}; int h,w; struct node{ int i; int j; }; vector<node>v;//雷 vector<node>l;//空白 void print(int i,int j){//扫描雷 for(int k=0;k<8;k++){ int tmpi=i+dy[k],tmpj=j+dx[k]; if(tmpi>=0 && tmpi<h && tmpj>=0 && tmpj<w) vis[tmpi][tmpj]++; } return; } void printb(int i,int j){//扫描空白 int ans=0; for(int k=0;k<8;k++){ int tmpi=i+dy[k],tmpj=j+dx[k]; if(tmpi>=0 && tmpi<h && tmpj>=0 && tmpj<w && pic[tmpi][tmpj]==‘*‘) ans++; } vis[i][j]=ans; return; } int main(){ int tot=1; while(cin>>h>>w && (h+w)!=0){ memset(vis,0,sizeof(vis)); v.clear(); l.clear(); int tota=0,totb=0;//a雷b空白初始化 for(int i=0;i<h;i++){ for(int j=0;j<w;j++){ cin>>pic[i][j]; if(pic[i][j]==‘*‘) {node cc;cc.i=i;cc.j=j;v.push_back(cc);tota++;} if(pic[i][j]==‘.‘) {node cc;cc.i=i;cc.j=j;l.push_back(cc);totb++;} } } printf("Field #%d:\n",tot++); if(tota>totb){ for(int i=0;i<l.size();i++){ printb(l[i].i,l[i].j); } }else{ for(int i=0;i<v.size();i++){ print(v[i].i,v[i].j); } } for(int i=0;i<h;i++){ for(int j=0;j<w;j++){ if(pic[i][j]==‘*‘) printf("*"); else printf("%d",vis[i][j]); } printf("\n"); } printf("\n"); } return 0; }
dotcpp1096 Minesweeper fillflood
标签:nod span code set des while sage 空白 process
原文地址:https://www.cnblogs.com/rign/p/10009236.html