您的位置:首页 > 其它

SSL-1157 特殊数列【STL_vector的运用】

2018-03-26 18:12 127 查看
目录

大意

思路

代码

大意

写出两个1,然后在它们中间插入2成为121,下一步在任意两个相邻的和为3的两个数之间插入3,成为13231;再下一步又在任意两个和为4的数之间插入4,成为1432341,…,由键盘输入nn(1<=n<=1001<=n<=100),求出用上述方法构造出来的序列,其插入的数为n。

思路

利用STL中的vector库完成插入操作,但时间效率不算低也不算高,插入操作耗时O(n)O(n)

而此题n<=100n<=100,总时间复杂度O(n2sizei)O(n2sizei)

sizeisizei为进行到第i次时当前序列的长度

代码

#include<cstdio>
#include<vector>
using namespace std;int n;
vector<int>q;
int main()
{
scanf("%d",&n);if(n==1) {puts("11");return 0;}//1特判
q.push_back(1);q.push_back(1);//先放入两个1
for(int i=2;i<=n;i++)//从2开始
for(int j=0;j<=q.size();j++)
if(q[j-1]+q[j]==i)//一波枚举
q.insert(q.begin()+j,i);//插入
for(int i=0;i<q.size();i++)
printf("%d",q[i]);//输出
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: