第六届CCF计算机职业资格认证考试题解(1,2两水题)

本文深入探讨了数位之和算法及消除类游戏的解决策略。通过详细解析,展示了如何通过简单的循环操作计算给定整数各位数字之和,并介绍了消除类游戏的实现逻辑,包括矩阵遍历和元素消除的优化方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

201512-1 数位之和

题目大意:输入一个数n,求出n的各个位数之和(每一位之和)

#include <iostream>
using namespace std;

int main(){
    int n;
    cin>>n;
    int ans = 0;
    while(n!=0){
        ans += n%10;
        n = n/10;
    }
    cout<<ans<<endl;
    return 0;
}

201512-2消除类游戏

题目大意:

给定n*m大小的矩阵,每个数字代表不同的颜色,行或列出现3个或3个以上相同的数字,则这些数变为0.注意的是,一个数字可能在行或列同时被消除。

 

思路:

只要进行两次遍历。首先,进行行扫描,发现3个数字相同将这三个数字变为0,注意这里操作的是map_ans数组,不是原数组;发现第4个也一样的话,也将其变为0.这样行列各扫描一次,输出map_ans 即可。 这里关键是,不能直接对map原数组进行操作。


#include <iostream>
using namespace std;

#define MAX 30

int map[MAX][MAX];   //初始的map数组
int map_ans[MAX][MAX];  //经过了横处理之后的数组

int main(){
    int n,m,i,j,k;
    int temp;
    cin>>n>>m;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            cin>>map[i][j];
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            map_ans[i][j]= map[i][j];
    //一行一行处理
    for(i=0;i<n;i++){
        temp = 1;
        for(j=1;j<m;j++){
            if(map[i][j] == map[i][j-1]){
                temp++;
                if(temp>3)
                    map_ans[i][j] = 0;
            }
            else
                temp = 1;
            if(temp == 3)
                map_ans[i][j] = map_ans[i][j-1] = map_ans[i][j-2] = 0;
        }
    }
    //一列一列处理
    for(i=0;i<m;i++){
        temp = 1;
        for(j=1;j<n;j++){
            if(map[j][i] == map[j-1][i]){
                temp++;
                if(temp>3)
                    map_ans[j][i] = 0;
            }
            else
                temp = 1;
            if(temp == 3)
                map_ans[j][i] = map_ans[j-1][i] = map_ans[j-2][i] = 0;
        }
    }
    
    for(i=0;i<n;i++){
        for(j=0;j<m;j++)
            cout<<map_ans[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值