2001 - 扫雷

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

大家都知道扫雷游戏

这个是一个扫雷的局面,我们可以发现,上面的数字表示该位置周围8个方格有多少个雷,例如第二行第二列的“2”表示周围的8个方格里有2个雷,没有标明数字也没有标明雷的格子表示周围的方格里没有雷。现在小明突发奇想,如果把原来不是雷的地方都改成雷,是雷的地方标上数字,(标上的数字意思见前面叙述),他想知道这样变换之后局面上的数字之和是多少,你能帮助他么?

题目输入

先输入T,表示输入T个测试数据,对于每个测试数据,

第一行输入整数n,m表示局面的行数,列数(0<n,m<=1000)。
接下来输入一个nm矩阵,矩阵元素表示意思如下
数字0--8,表示周围雷的个数
星号“
”,表示该位置是雷。
输入的数据保证数字和雷不矛盾。

题目输出

对于每个测试数据,输出一行,一个数字,表示变换后局面上数字之和。

输入/输出样例

输入格式

1
3 3
*2*
132
01*

输出格式

9

Java解答

import java.util.*;

public class Main{
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);
        int T=cin.nextInt();
        while(T-->0){
            int n=cin.nextInt();
            int m=cin.nextInt();
            String s[]=new String[n];
            for(int i=0;i<n;i++){
               s[i]=cin.next();
            }
            long ans=0;
            for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){
                    if(s[i].charAt(j)>='1' && s[i].charAt(j)<='9')
                        ans+=s[i].charAt(j)-'0';
                }
            }
            System.out.println(ans);
       }
    }
}