昆明app制作湖州网站seo
author:&Carlton
tag:递归,栈
topic:【NOIP】小鱼的数字游戏题解
language:C++
website:洛谷
date:2023年7月29日
目录
我的题解思路
优化
别人的优秀思路:
我的题解思路
题目要求的数据很弱:
①数字大小范围小,int范围够
②数字数量少,有限数量用静态数组可以简单表示
所以用数组存储数据,然后逆序输出即可。
源代码
#include <iostream>
using namespace std;int main()
{int a[100]={0}; //最多有100个数字输入,初始化数组int sign,i,j;for(i=0;i<100;i++){cin >> sign;//如果不为0则存入数组if(sign){a[i]=sign;}else{break;}}for(j=99;j>=0;j--){//如果为有效数字则打印输出if(a[j]){cout << a[j] << " ";}else{continue;}}
}
优化
在结束break时可以记录当前数组位置,逆序输出时在标记处开始。
别人的优秀思路:
要求数据后进先出,套用数据结构栈解决问题。
empty()判断栈是否为空
push(x)把x压入栈
top()返回栈顶元素
pop()弹出栈顶第一个元素
#include <bits/stdc++.h>
using namespace std;
int main(){stack<int> s;//定义一个栈while (1){int a;scanf("%d",&a);if (!a) break;//判断是否结束s.push(a);//将a压入栈}while (!s.empty()){cout<<s.top();//输出栈顶元素printf(" ");s.pop();//栈顶第一个元素出战}cout<<"\n";//换行别理它=-=return 0;
}
欢迎指正与分享,谢谢!