制作网站需要多少时间,wordpress 页面设置不了标签,高明搜索seo,百度小说app嗯.... 这道题看起来挺像一个字符串的题#xff0c;但其实却错了#xff0c;它实质上却用了一个栈进行了一个模拟#xff08;当然还有一种鬼畜的做法#xff0c;下面也会介绍到..... 首先先看题#xff1a; 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题…嗯.... 这道题看起来挺像一个字符串的题但其实却错了它实质上却用了一个栈进行了一个模拟当然还有一种鬼畜的做法下面也会介绍到..... 首先先看题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 给出一个英语句子希望你把句子里的单词顺序都翻转过来 输入描述 输入包括一个英语句子。 输出描述 按单词的顺序把单词倒序输出 样例输入 I love you 样例输出 you love I 数据范围及提示 简单的字符串操作 思路一 因为题目中有“翻转”两个字首先想到先进后出直接联想到栈这里可以用手动栈进行模拟思路主要是先将所有的字符全部输入并且将读入的一串字符串倒序压入栈中。 然后用头指针top以此向下遍历如果找到一个空格说明这是一个单词则将这个单词的每个字母依次输出并加上空格注意不仅要判断空格还要特判一下是否为最后一个单词....并且注意此种思路是对每一个字母进行操作 见手动栈代码 1 #include cstdio2 #include cstring3 4 5 using namespace std;6 7 8 char s[105], stack[105];9 int main()
10 {
11 int top -1;//初始化栈为空
12
13 gets(s);//将所有字符读入
14
15 for(int i strlen(s); i 0; i--){//倒序
16 if(s[i] ! i ! 0){// 确定两个边界
17 stack[top]s[i];// 只将除空格外的字符入栈
18 }
19 else// 遇到空格或者处理最后一个元素
20 {
21 if(i 0){//当最后一个元素处理时
22 stack[top] s[i];//入栈
23 while(top)//判断栈是否为空
24 printf(%c,stack[top--]);//输出栈不需加空格
25 }
26 //如果不是处理到最后一个元素而只是遇到了空格而隔开
27 while(top)//不必加else判断如果执行了上面的if语句那么执行完之后栈肯定为空下面语句不会再执行
28 printf(%c,stack[top--]);
29 printf( );//出栈时加上空格
30 }
31 }
32 return 0;
33 } 手动栈 思路二 同样是用栈但是还可以用STL库中的栈这样避免了头指针的麻烦性。思路大体就是定义一个string类型的栈将输入的每一个单词作为一个整体压入栈中注意while语句有坑当你输入时会输入不完所以在自己测试中要用Ctrl z 停止操作所以还是比较支持手动栈这种做法不太严谨....)。当栈不为空的时候 就从顶部输出每一个单词并且给它在后面加上空格 ....此种思路是对每一个单词进行操作 见STL库栈代码 1 #includeiostream2 #includecstring3 #includestack4 5 using namespace std;6 7 stackstring st;// 注意将栈设为字符串类型压入的每一个元素都可以为一个字符串 8 9 int main()
10 {
11 string a;//存放单个单词的临时字符串
12 while(cina)
13 {
14 st.push(a);//cin读取第一个单词push入栈
15 }
16 while(!st.empty())//当栈非空时重复下列操作
17 {
18 coutst.top() ; //输出栈顶元素即最后一个单词
19 st.pop();//删除已输出的单词此时倒数第二个单词为栈顶
20 }
21 return 0;
22 }
23 //自己测试时需CtrlZ结束读取 STL栈 思路三 这个题当然除了栈还可以用基础的string操作....(感觉这种操作好鬼畜啊QAQ....具体的思路就是用string类型的a来储存每一次读入的单词我们再用一个string类型的s来储存答案因为要逆着输出而这里与上两个思路不太相同前两个思路都是输出时进行倒序而这种思路就是存储时就倒着存储...所以将原来s的基础上再在它的前面加上a和空格即可....太鬼畜了...解释不清楚还是看代码吧....注意这种做法也是不太严谨还是输入时要用Ctrl z停止输入 1 #includecstdio2 #includecstring3 #includeiostream4 5 using namespace std;6 7 int main()8 {9 string a,s;
10 s ;
11 while(cina)
12 sa s;//即为思路中解释不明白的地方...
13 couts;
14 return 0;
15 } 鬼畜操作 嗯.... 这三个思路其实哪一个都不错取决于个人的习惯思路一和思路二差不多比较容易思考但代码有难度但思路三思考起来有点困难但是代码简便易懂....总体来说这道题的解法还是比较全的了.... 转载于:https://www.cnblogs.com/New-ljx/p/10473621.html