鱼C论坛

 找回密码
 立即注册
查看: 1169|回复: 4

[已解决]求助

[复制链接]
发表于 2023-8-30 21:14:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
原题链接
https://www.luogu.com.cn/problem/P1308
my code
#include<bits/stdc++.h>
using namespace std;
map<string,int>a;
int main(){
        string n,temp;
        int i = 0,cnt = -1;
        cin>>n;
        transform(n.begin(),n.end(),n.begin(),::tolower);
        while(cin>>temp){
                cnt++;
                transform(temp.begin(),temp.end(),temp.begin(),::tolower);
                if(temp == n){
                        
                        i++;
                        if(a[temp] == 0) cout<<cnt<<" ";
                        cout<<i;
                }
        }
        if(a[temp] == 0) cout<<"-1";
        else cout<<i;
}
不是,我这个i在通过测试样例1的时候是只++了两次,怎么就成4了;
输入输出样例
输入 #1
To
to be or not to be is a question
输出 #1
2 0
最佳答案
2023-8-30 21:34:50
map没有初始化为1

结帖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-30 21:14:35 | 显示全部楼层
问题出在你的代码中,你在每次找到匹配的单词时都会输出计数器i的值,导致i的值被重复输出了。

解决这个问题的方法是,在每次找到匹配的单词时,只输出一次计数器i的值,而不是每次都输出。你可以使用一个变量flag来判断是否已经输出过i的值,如果没有输出过,则输出i的值,并将flag设置为true,以后再找到匹配的单词时就不再输出i的值了。

修改后的代码如下:
#include<bits/stdc++.h>
using namespace std;
map<string,int>a;
int main(){
    string n,temp;
    int i = 0, cnt = -1;
    bool flag = false; // 添加一个标志变量flag
    cin >> n;
    transform(n.begin(), n.end(), n.begin(), ::tolower);
    while(cin >> temp){
        cnt++;
        transform(temp.begin(), temp.end(), temp.begin(), ::tolower);
        if(temp == n){
            i++;
            if(a[temp] == 0){
                cout << cnt << " ";
            }
            if(!flag){ // 如果flag为false,输出i的值
                cout << i;
                flag = true; // 将flag设置为true
            }
        }
    }
    if(a[temp] == 0){
        cout << "-1";
    }
    else{
        cout << i;
    }
}

这样修改后,代码应该就能正确输出结果了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-30 21:16:20 | 显示全部楼层
我这个i输出这么多次就是为了测试 bug
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-30 21:19:08 | 显示全部楼层
测试出来了
map忘设置成1了
谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-30 21:34:50 | 显示全部楼层    本楼为最佳答案   
map没有初始化为1

结帖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 06:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表