错题:

章节十T3

错因:

程序过于复杂,以致超时。

思路

一开始输入原字符串,然后输入数据,然后循环判断得出最后这个字母会变成什么字母最后进行一遍循环把 字符串对应字母付成对应的字母。

参考代码

#include<bits/stdc++.h>
using namespace std;
char st[131];
int main(){
    int n,m;
    cin>>n>>m;
    string s;
    cin>>s;
    for(int i=0;i<=130;i++) st[i]=i;
    while(m--){
        char x,y;
        cin>>x>>y;
        for(int i='a';i<='z';i++){
            if(st[i]==x) st[i]=y;
            else if(st[i]==y) st[i]=x;
        }
    }
    for(int i=0;i<s.size();i++){
        s[i]=st[s[i]];
    }
    cout<<s;
    return 0;
}

章节十T5

错因:

总值少一。

思路

建数组A对其每次输入的项,付值成循环次数, 然后循环n-1次,计数变量每次上加上他前一项和后一项的差的绝对值,最后输出计数变量

参考代码

#include<bits/stdc++.h>
using namespace std;
long long a[200001];
int main(){
    long long n,b,sum=1;
    cin>>n;
    for(long long i=0;i<n;i++){
        cin>>b;
        a[b-1]=i;
    }
    for(long long i=0;i<n-1;i++){
        sum+=abs(a[i]-a[i+1]);
    }
    cout<<sum;
    return 0;
}

章节十T6

错因:

测试使用的不是测试代码。

思路

循环输入每一项, 然后再次循环,每次循环输入左边的和右边的索引,然后把这段的数字加起来,如果大于零就加入计数变量,最后输出计数变量。

参考代码

#include<bits/stdc++.h>
using namespace std;
long long a[101];
int main(){
    long long ans=0;
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=0;i<m;i++){
        int x,y,sum=0;
        cin>>x>>y;
        for(int j=x-1;j<y;j++){
            sum+=a[j];
        }

        if(sum>0) ans+=sum;
    }
    cout<<ans<<endl;
    return 0;
}

THE END