将N个整数组合成一个最大的数

首先根据题目要求便发现用数据太麻烦,故采用vector<>容器。

vector在声明时有以下三种形式:

using namespace std;

using  std::vector;

std::vector<int> vec;

其还有很多可以直接调用的函数,如:

(1)第一部分

vec.begin() //指向迭代器中第一个元素。
vec.end() //指向迭代器中末端元素的下一个,指向一个不存在元素。
vec.push_back(elem) //在尾部加入一个数据。
vec.pop_back() //删除最后一个数据。
vec.capacity() //vector可用空间的大小。
vec.size() //返回容器中数据个数。
vec.empty() //判断容器是否为空。
vec.front() //传回第一个数据。
vec.back() //传回最后一个数据,不检查这个数据是否存在。
vec.at(index) //传回索引idx所指的数据,如果idx越界,抛出out_of_range。
vec.clear() //移除容器中所有数据。
vec.erase(iterator) //删除pos位置的数据,传回下一个数据的位置。
vec.erase(begin,end) //删除[beg,end)区间的数据,传回下一个数据的位置。注意:begin和end为iterator
vec.insert(position,elem) //在pos位置插入一个elem拷贝,传回新数据位置。
vec.insert(position,n,elem) //在pos位置插入n个elem数据,无返回值。
vec.insert(position,begin,end) //在pos位置插入在[beg,end)区间的数据,无返回值。

(2)第二部分

assign函数原型及功能:
void assign(const_iterator first,const_iterator last); //功能:将区间[first,last)的元素赋值到当前的vector中,当前vector会清除掉容器中之前的内容。
void assign(size_type n,const T& x = T()); //功能:赋n个值为x的元素到当前vector中,当前vector会清除掉容器中之前的内容。

(3)第三部分

vec.rbegin() //传回一个vector的最后一个数据的指针。
vec.rend() // 传回一个vector的第一个数据前一个位置的指针。?

(4)第四部分

vec.resize(num) //重新指定vector的长度。
vec.resize(num,value) //重新指定vector的长度。并设定新增的元素的值

(5)第五部分

vec.swap(vec1) //将vec1的容量限定在最小的情况下
swap(vec,vec1) //交换数据
vec.reserve()//设定capacity的值,如果小于原本的capacity的值则保持为原本的capacity的值。
一些创建vector的方式

vector<type> vec
vector<type> vec(vec1)
vector<type> vec=vec1
vector<type> vec(n)
vector<type> vec(n,elem)
vector<type> vec(begin,end)
vector<type> vec{a,b,c,……}
vector<type> vec={a,b,c,……}

这个程序的代码:

#include<iostream>
#include<string>
#include<vector>

using namespace std;
int main(){
    int count;
    while(cin>>count){
       vector<string> inputStr;
       string curStr;
      for(int i=0;i<count;i++){
          cin>>curStr;
          inputStr.push_back(curStr);
      }
      for(int i=0;i<inputStr.size()-1;i++) {
          for(int j;j<inputStr.size()-1-i;j++){
          if((inputStr[j]+inputStr[j+1])<(inputStr[j+1]+inputStr[j])){
              swap(inputStr[j],inputStr[j+1]);
          }  
      }
    }
    for(string str:inputStr){
        cout<<str;
    }
    cout<<endl;
   }
    return 0;
}

在其中运用了A+B>B+A则A>B这个思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值