第六次CCF计算机软件能力认证

第一题:

#include<bits/stdc++.h>
#define ll long long
using namespace std;

int main(){
    ll n;scanf("%lld",&n);
    int res=0;
    while(n){
        res+=n%10;
        n/=10;
    }
    printf("%d\n",res);
    return 0;
}

第二题:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=35;
int g[N][N];
int a[N][N];
int main(){
    int n,m;scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            scanf("%d",&a[i][j]);
    memcpy(g,a,sizeof g);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;){
            if(j+2<=m&&a[i][j+1]==a[i][j]&&a[i][j+2]==a[i][j]){
                int t=a[i][j];
                while(j<=m&&a[i][j]==t){
                    g[i][j]=0;
                    j++;
                }
            }
            else j++;
        }
    }
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;){
            if(j+2<=n&&a[j+1][i]==a[j][i]&&a[j+2][i]==a[j][i]){
                int t=a[j][i];
                while(j<=n&&a[j][i]==t){
                    g[j][i]=0;
                    j++;
                }
            }
            else j++;
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++)
            printf("%d ",g[i][j]);
        puts("");
    }
    return 0;
}

第三题:

#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> pii;
const int N=105;
int m,n,q;
char g[N][N];
int s,t;
bool st[N][N];
int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
void bfs(char c){
    memset(st,false,sizeof st);
    queue<pii> q;
    q.push({s,t});
    st[s][t]=true;
    g[s][t]=c;
    while(q.size()){
        pii fs=q.front();
        q.pop();
        for(int i=0;i<4;i++){
            int x=fs.x+dx[i];
            int y=fs.y+dy[i];
            if(x<0||x>=n||y<0||y>=m||g[x][y]=='-'||g[x][y]=='|'||g[x][y]=='+'||st[x][y]) continue;
            st[x][y]=true;
            g[x][y]=c;
            q.push({x,y});
        }
    }
}
int main(){
    scanf("%d%d%d",&m,&n,&q);
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            g[i][j]='.';
    while(q--){
        int op;
        scanf("%d",&op);
        if(op==0){
            int x1,y1,x2,y2;
            scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
            if(x1==x2){
                for(int i=min(y1,y2);i<=max(y1,y2);i++){
                    if(g[i][x1]=='-'||g[i][x1]=='+') g[i][x1]='+';
                    else g[i][x1]='|';
                }
            }
            else{
                for(int i=min(x1,x2);i<=max(x1,x2);i++){
                    if(g[y1][i]=='|'||g[y1][i]=='+') g[y1][i]='+';
                    else g[y1][i]='-';
                }
            }
        }
        else{
            char c;
            scanf("%d%d",&t,&s);
            cin>>c;
            bfs(c);
        }
    }
    for(int i=n-1;i>=0;i--){
        for(int j=0;j<m;j++)
            printf("%c",g[i][j]);
        puts("");
    }
    return 0;
}

第四题:

#include<bits/stdc++.h>
using namespace std;
const int N=10010;
set<int> g[N];
int n,m;
int p[N];
vector<int> ans;
int find(int x){
    if(p[x]!=x) p[x]=find(p[x]);
    return p[x];
}
void dfs(int u){
    //puts("bug");
    while(g[u].size()){
        int t=*g[u].begin();
        g[u].erase(t),g[t].erase(u);
        dfs(t);
    }
    ans.push_back(u);   
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++) p[i]=i;
    while(m--){
        int a,b;scanf("%d%d",&a,&b);
        g[a].insert(b);
        g[b].insert(a);
        if(find(a)!=find(b)){
            p[find(a)]=find(b);
        }
    }
    int t=0;
    for(int i=1;i<=n;i++){
        if(find(i)!=find(1)){
            puts("-1");
            return 0;
        }
        if(g[i].size()%2) t++;
    }
    if((t!=0&&t!=2)||(t==2&&g[1].size()%2==0)){
        puts("-1");
        return 0;
    }
    dfs(1);
    for(int i=ans.size()-1;i>=0;i--){
        printf("%d ",ans[i]);
    }
    return 0;
}

第五题:

待补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值