错题:

章节三T1

错因:

未考虑到特殊情况。

思路

创建4个变量,一个记录好的蜡烛数,一个记录烧过的蜡烛数,一个记录总数,最后一个可以组装成一个的蜡烛数。然后while循环到好的蜡烛数为0结束,sum每次加a,a加烧完的蜡烛数,烧完的改为好的蜡烛数取模可以组装成一个的蜡烛数,最后好的蜡烛数整除可以组装成一个的蜡烛数。最后输出总数即可。

参考代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a,b,sum=0,c=0;
    cin>>a>>b;
    while(a){
        sum+=a;
        a+=c;
        c=a%b;
        a/=b;
    }
    cout<<sum<<endl;
    return 0;
}

章节三T2

错因:

未考虑到特殊情况。

思路

判断单程票是否比特殊票划算, 然后判断特殊票能成的天数能否整除 其要乘地铁的的总天数, 不然看剩余的是单程票划算还是特殊的划算, 按期计算方式输出总票数。

参考代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m,a,b;
    cin>>n>>m>>a>>b;
    if(a*m<=b){
        cout<<n*a<<endl;
    }else if(n%m==0){
        cout<<n/m*b;
    }else if(n%m*a>b){
        cout<<(n/m+1)*b<<endl;
    }else{
        cout<<n%m*a+n/m*b<<endl;
    }
    return 0;
}

章节三T3

错因:

删除栈顶元素时 未考虑栈是否为空。

思路

一旦输入是Q,就在判定压入元素,一旦输入是A判定栈是否为空,如果不为空就删除栈顶元素, 最后如果 栈是空就输出yes,栈不为空就输出no。

参考代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int t;
    char c;
    cin>>t;
    for(int e=0;e<t;e++){
        stack<char> a;
        int n;
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>c;
            if(c=='Q'){
                a.push('c');
            }else if(c=='A'&&!a.empty()){
                a.pop();
            }
        }
        if(a.empty()) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}

章节三T6

错因:

变量过大,超过了字符串。

思路

出入字符串,判断是不是其子序列(判断时问号忽略,直接判对)一旦输入的第二个字符串结束直接判对,后面的如果是?即输出任意字母(如a,b,c,d,e,f,g,h......),如果第一个字符串输出结束,但第二个字符串尚未结束,那么输出no,结束。

参考代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int p,cnt;
    cin>>p;
    string s,t;
    for(int e=0;e<p;e++){
        cnt=0;
        cin>>s>>t;
        for(int i=0;i<s.size();i++){
            if(s[i]==t[cnt]){
                cnt=cnt+1;
            }else if(s[i]=='?'){
                s[i]=t[cnt];
                cnt=cnt+1;
            }
            if(cnt==t.size()) break;
        }
        if(cnt==t.size()){
            cout<<"YES"<<endl;
            for(int j=0;j<s.size();j++){
                if(s[j]!='?') cout<<s[j];
                else cout<<'a';
            }
            cout<<endl;
        }else{
            cout<<"NO"<<endl;
        }
    }
    return 0;
}

THE END