悬关,有注释和思路,就是不知道哪里错了

P10836 『FLA - I』歌静河

lch66 @ 2024-08-03 20:21:48

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<math.h>
#include<map>
#include<string.h>
#include<string>
#include<set>
using namespace std;
#define ll long long
int n, m, sumb = 0;
string a, b;
int main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin >> n >> m;
    cin >> a >> b;
    for (int i = 0; i < b.length(); i++)
    {
        if (b[i] == '#')
        {
            sumb++;//求b中有多少个'#’
        }
    }
    int x = 0, flag = 0;
    for (int i = 0; i < a.length(); i++)
    {
        if (a[i] == '#')
        {
            if (!flag)
            {
                cout << 'a';//a中第一个'#'赋值为'a'
                flag = 1;
            }
            else
            {
                int u = 25 - x;
                if (sumb >= u && sumb > 0)//如果可以通过在b中连续写u个'#',则可以到达下一轮的'a'
                {
                    cout << 'a';
                    x = 0;
                    sumb -= u;//减去次数
                }
                else//如果不够,那么就写下一个字符
                {
                    x++;
                    if (x == 26)x = 0;
                    printf("%c", x + 'a');
                }
            }
        }
        else
        {
            cout << a[i];
        }
    }
}

求各路大神帮忙看看


by Ahws_rwhy @ 2024-08-03 21:29:06

@lch66 我跟你的一样


by 朱梓煊ZZX @ 2024-08-03 21:33:00

@lch66 有ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);时cin,cout与scanf,printf不能混用


by 朱梓煊ZZX @ 2024-08-03 21:34:20

建议看下这个


by lch66 @ 2024-08-04 10:30:03

@朱梓煊ZZX 涨知识了,啥都怀疑过了,就是没怀疑过printf,主要之前混用都侥幸没出过问题,感谢


|