1.21寒假集训

A:

解题思路:

判断改变第一个,后面字符根据前一个字符判断是否改变

判断改变第二个,同上,找到最小改变值。

下面是c++代码:

#include<iostream>
using namespace std;
int main()
{
    string s,s1,s2;
    int sum1 = 0,sum2 = 0;
    cin >> s;
    s1 = s;
    for(int i = 1;i < s.length();i++){
        if(s[i] == s[i - 1]){
            s[i] = (s[i] == '1' ? '0' : '1'); 
            sum1 += i + 1;
        }
    }
    s1[0] = (s1[0] == '1' ? '0' : '1');
    sum2++;
    for(int i = 1;i < s.length();i++){
        if(s1[i] == s1[i - 1]){
            s1[i] = (s1[i] == '1' ? '0' : '1');
            sum2 += i + 1;
        }
    }
    cout << min(sum1,sum2);
    return 0;
}

B:

解题思路:

被这题搞到心态了,没有理解题目意思,只要判断字符串里是否只有“Baidu”这五个字符。

下面是c++代码:

#include<iostream>
using namespace std;
int main()
{
    int n, B = 0, a = 0, j = 0, d = 0, u = 0;
    string s;
    cin >> n;
    while (n != 0) {
        B = 0, a = 0, j = 0, d = 0, u = 0;
        cin >> s;
        if(s.length() != 5){
            cout << "No" << endl;
        }else{
            for(int i = 0 ; i < s.length();i++){
                if(s[i] == 'B'){
                    B++;
                }else if(s[i] == 'a'){
                    a++;
                }else if(s[i] == 'i'){
                    j++;
                }else if(s[i] == 'd'){
                    d++;
                }else if(s[i] == 'u'){
                    u++;
                }
            }
            if(B == 1 && a == 1 && j == 1 && d == 1 && u == 1){
                cout << "Yes" << endl;
            }else{
                cout << "No" << endl;
            }
        }
        n--;
    }
    return 0;
}

C:

解题思路:

按照题目意思模拟就好,没啥说的。

下面是c++代码:

#include<iostream>
using namespace std;
int main()
{
    int t,n,k,u,v;
    cin >> t;
    while(t != 0){
        int arr[100],index = 1;
        cin >> n >> k;
        for(int i = 0;i < n;i++){
            cin >> arr[i];
        }
        for(int i = 0;i < k;i++){
            cin >> u >> v;
            arr[u - 1]++,arr[v - 1]--;
        }
        for(int i = 1;i < n;i++){
            if(arr[i] < arr[i - 1]){
                index = 0;
                break;
            }
        }
        if(index == 0){
            cout << "No" << endl;
        }else{
            cout << "Yes" << endl;
        }
        t--;
    }
    return 0;
}

D:

解题思路:

以字符串的形式输入,只要判断两部分的最后一个数是偶数还是奇数就行。

下面是c++代码:

#include<iostream>
using namespace std;
int main()
{
    int sum = 0;
    string s;
    cin >> s;
    for(int i = s.length() - 2;i >= 0;i--){
        if(s[i] % 2 == 0 && s[s.length() - 1] % 2 == 0){
            sum++;
        }else if(s[i] % 2 != 0 && s[s.length() - 1] % 2 != 0){
            sum++;
        }
    }
    cout << sum;
    return 0;
}

E:

解题思路:

奇数行正着输出,偶数行倒着输出。

下面是c++代码:

#include<iostream>
using namespace std;
int cnt=1;
const int N=110;
int a[N][N];
int main(){
    int n;
    cin>>n;
    if(n%2){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                cout<<cnt<<' ';
                cnt++;
            }
            cout<<endl;
        }
    }
    else{
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(i%2){
                    a[i][j]=cnt++;
                }
                else{
                    a[i][n-j+1]=cnt++;
                }
            }
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                cout<<a[i][j]<<' ';
            }
            cout<<endl;
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值