首页
关于
我
Search
1
洛谷 B2122 单词翻转 的wa问题
173 阅读
2
关于博客
119 阅读
3
在本地进行gpu训练的一些准备(不废话)
102 阅读
4
关于我想搭建服务器这件事
84 阅读
5
如果你读完题目不能第一时间想到异或,就应该好好学一下位运算了,这是个学习位运算的好时机.jpg
81 阅读
主页
技术博客
乱想
摄影
音乐
登录
Search
标签搜索
cpp
深度学习
cuda
C++
羔羊治小孩儿
累计撰写
10
篇文章
累计收到
161
条评论
首页
栏目
主页
技术博客
乱想
摄影
音乐
页面
关于
我
搜索到
1
篇与
的结果
2024-08-24
洛谷 B2122 单词翻转 的wa问题
B2122 单词翻转题目描述小明同学写单词的时候喜欢反着写,比如 hello 他会写成 olleh。给出小明同学写的一个句子,请你将所有的单词复原。## 输入格式共一行,一个字符串表示句子,单词之间以空格分隔。输出格式每个单词一行。输入输出样例输入 #1olleh dlrow输出 #1hello world说明/提示句子长度不超过100,仅包含小写字母和空格,不存在多余的空格。这里题目要求,要读取一行的信息,包含空格,传统的cin遇到空格就结束了而这里读取的内容时,结束没有任何标志,就是几个空格隔开的字符串组合而成的大字符串所以考虑使用了 getline() 函数,可以读取这一行的信息,遇到回车才会结束。(坏也坏在这)报错信息:Wrong Answer.wrong answer On line 1 column 1, read (ASCII 13), expected s{card-default label="报错" width="80%"}{/card-default}我的代码:#include <iostream> #include <vector> #include <string> using namespace std; int main() { string in_a; getline(cin, in_a); // 读取整行,包括空格 vector<char> arr1(in_a.begin(), in_a.end());// 字符串所有字符切成字符型不定长数组 string ans[101]; // 存放所有单词 int num_ans = 0; for (int i = arr1.size() - 1; i >= 0; i--) { // 反转所有单词,存到ans中 // *** 这里把arr1.size() - 1 改成 arr1.size() - 2 就可以了 if (arr1[i] != ' ') ans[num_ans] = ans[num_ans] + arr1[i]; else { num_ans++; } } for (int i = num_ans; i >= 0; i--) { // 逆置输出ans cout << ans[i] << endl; } return 0; } 其实,正常的Windows 系统中 \r\n 被默认为换行,在洛谷的Linux 测评机中, \n 被默认为换行,这就导致测评机使得 \r 被吃进一次性读取的带有空格的字符串中。所以最后报错会有 字符13,我查了阿斯克码表,排行第13的正是\r。而且一定是在getline得到的最后一个字符。考虑干掉他就行。然后去看了大佬的解法。#include<bits/stdc++.h> using namespace std; string s; int main(){ while(cin>>s){ reverse(s.begin(),s.end()); cout<<s<<endl; } return 0; }十分的精巧,cin读到信息了才进入循环,否则退出,完美解决空格和回车的问题,空格时结束,但可以进入下一次循环,如果是回车,下一次循环也不满足,也就进不来。
2024年08月24日
173 阅读
22 评论
0 点赞