top1编程
← 返回题目
题解

【入门】地雷数量求解

3 条题解

  • 0
    @ 2026-7-29 20:23:27
    #include<bits/stdc++.h>//#493.地雷数量求解
    /*
    	问题1、地雷经过加密,如何判断是否有地雷?
    		答:各个数位之和是一个奇数,代表有地雷
    	问题2、如何统计地雷数量?
    		答:使用计数器(一定要初始化为0),循环嵌套扫描整张地图
    			地图是一个二维数组组成的方阵,如果有遇到各个数位之和为奇数,则计数器+1。
    	问题3、各个数位要求和,我们要如何进行拆位?
    		答:题中说明了标记数均<=9999所以可以直接拆位存放在g、s、b、q几个变量中
    			使用while()进行拆位也可以
    */
    int a[105][105];
    using namespace std;
    int main(){
    	//基本输入要很熟练
    	int n, m, cnt = 0;//cnt计数器
    	cin >> n >> m;
    	for (int i = 1; i <= n; i++) {
    		for (int j = 1; j <= m; j++) {
    			cin >> a[i][j];
    			int g = a[i][j] % 10;//拆分个位
    			int s = a[i][j] / 10 % 10;//拆分十位
    			int b = a[i][j] / 100 % 10;//拆分百位
    			int q = a[i][j] / 1000 % 10;//拆分千位
    			if ((g + s + b + q) % 2 == 1) cnt++;//和是奇数,计数器+1。
    		}
    	}
    	
    	cout << cnt;
    	return 0;
    }
    
    • 0
      @ 2026-7-29 0:06:22
      #include <bits/stdc++.h>
      using namespace std;
      
      int main() {
      	int n, m, cnt = 0;
      	cin >> n >> m;
      	for (int i = 1; i <= n; i++) {
      		for (int j = 1; j <= m; j++) {
      			int k, sum = 0;
      			cin >> k;
      			while (k) {
      				sum += k % 10;
      				k /= 10;
      			}
      			if (sum % 2 == 1) {
      				cnt++;
      			}
      		}
      	}
      	cout << cnt;
      	return 0;
      }
      
      • 0
        @ 2026-7-28 22:09:31
        #include <iostream>
        using namespace std;
        
        int main(){
        	int a[200][200],i,j,n,m,c = 0,g,s,b,q,w;
        	cin>>n>>m;
        	
        	for(i = 0;i < n;i++){
        		for(j = 0;j < m;j++){
        			cin>>a[i][j];
        			g = a[i][j] % 10;
        			s = a[i][j] / 10 % 10;
        			b = a[i][j] / 100 % 10;
        			q = a[i][j] / 1000;
        			
        			if((g + s + b + q) % 2 == 1){
        				c++;
        			}
        		} 
        	}
        	
        	cout<<c<<endl;
        }
        
        • 1