UVA 10189 Minesweeper

来源:互联网 发布:老司机软件排行 编辑:程序博客网 时间:2024/04/26 08:19

记录一下AC代码

#include "stdio.h"#include "string.h"#include "stdlib.h"int solve(char** str,int n, int m, int i, int j){    int l, r, t, b;/*确定左右上底来确定小方阵*/    if(i - 1 < 0){        t = 0;    }else{        t = i -1;    }    if(i + 1 > n - 1){        b = n - 1;    }else{        b = i + 1;    }    if(j - 1 < 0){        l = 0;    }else{        l = j - 1;     }    if(j + 1 > m - 1){        r = m - 1;    }else{        r = j + 1;    }    int count = 0;    for(; t<=b; t++){        int temp;        for(temp=l;temp<=r;temp++){            if(str[t][temp]== '*'){                count++;            }        }    }    return count;}int main(){    int n,m;    int count = 1;    while(scanf("%d%d",&n,&m)){        /*程序中止条件 */        if(n == 0 && m == 0){            break;        }        if(count>1)            printf("\n");        int i, j;        /*输入布局 */        /*c语言动态分配内存*/        char** str;        str = (char**) malloc(sizeof(int*) * n);        for(i=0;i<n;i++){            str[i] = (char*) malloc(sizeof(char) * m);        }        getchar(); /*注意消除回车的影响*/        for(i=0 ;i<n ;i++){            for(j=0 ;j<m; j++){                scanf("%c",&str[i][j]);            }            getchar(); /*注意消除回车的影响*/        }        /*输出布局 */        printf("Field #%d:\n",count);        for(i=0; i<n; i++){            for(j=0; j<m; j++){                if(str[i][j] == '*'){                    printf("*");                }else{                    printf("%d",solve(str,n,m,i,j));                }            }            printf("\n");        }         count++;        /*释放内存*/        for(i=0;i<n;i++){            free(str[i]);        }         free(str);    }    return 0;} 
0 0
原创粉丝点击