ACM学习历程8——Vector应用

来源:互联网 发布:三维测量的算法 编辑:程序博客网 时间:2024/05/29 11:53

Vectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度。Vector的方法有如下一些:

                                           

应用举例一:

输入数据:含有不多于50个的正整数n0<=n<=46,输出数:对于每个n计算其第nfibonacci数,每个结果独占一行。

输入:

6

10

输出:

8

55

#include <iostream>#include <vector>using namespace std;int main(){    vector<int> v;    int i;    int n;    v.push_back(0);    v.push_back(1);    for(i=2; i<=46; i++)        v.push_back(v[i-1]+v[i-2]);    while(cin>>n)        cout<<v[n]<<endl;    return 0;}

应用举例二:

说明:输入数据 第一行为一个整数m,表示测试用例的个数;接下来有m行,每行表示一个测试用例,每个测试用例为一个十进制数n
输出数据 十进制整数n对应的二进制数中所有1的位置,在一行输出,最低位的位置为0多个测试用例的结果顺序输出,之间没有空行,整数前不加无效的0
输入样例 
2
13
8

输出样例:
0 2 3
3

#include <iostream>#include <vector>using namespace std;int main(){    vector<int> v;    int i,n,data;    while(cin>>n)    {        for(i=0; i<n; i++)        {            v.clear();            cin>>data;            do            {                v.push_back(data%2);                data=data/2;            }            while(data!=0);            for(int j=0; j<v.size(); j++)            {                if(v[j]==1)                    cout<<j<<" ";            }            cout<<endl;        }    }    return 0;}
下面是对结构体数据类型自定义比较函数的方法,可以根据题目排序的要求在Sort中使用不用的自定义比较函数即可。

#include<iostream>#include<string>#include<fstream>#include<algorithm>#include<cstring>#include<vector>using namespace std;typedef struct book{    string name;    int year;    int price;} STU;bool comName(const STU &a,const STU &b){    if(a.name!=b.name)        return a.name<b.name;    else if(a.year!=b.year)        return a.year<b.year;    else        return a.price<b.price;}bool comYear(const STU &a,const STU &b){    if(a.year!=b.year)        return a.year<b.year;    else if(a.name!=b.name)        return a.name<b.name;    else        return a.price<b.price;}bool comPrice(const STU &a,const STU &b){    if(a.price!=b.price)        return a.price<b.price;    else if(a.name!=b.name)        return a.name<b.name;    else        return a.year<b.year;}int main(){    ifstream fin("test.txt");    ofstream fout("output.pc2");    int i,n;    vector<STU> v;    vector<STU>::iterator p;    STU b;    while(fin>>n)    {        v.clear();        if(n==0)            break;        for(i=0; i<n; i++)        {            fin>>b.name>>b.year>>b.price;            v.push_back(b);        }        string comp;        fin>>comp;        if(comp=="Name")            sort(v.begin(),v.end(),comName);        else if(comp=="Year")            sort(v.begin(),v.end(),comYear);        else            sort(v.begin(),v.end(),comPrice);        for(p=v.begin(); p!=v.end(); p++)        {            cout<<(*p).name<<"  "<<(*p).year<<"  "<<(*p).price<<endl;        }    }    fin.close();    fout.close();    return 0;}

0 0
原创粉丝点击