<input id="ohw05"></input>
  • <table id="ohw05"><menu id="ohw05"></menu></table>
  • <var id="ohw05"></var>
  • <code id="ohw05"><cite id="ohw05"></cite></code>
    <label id="ohw05"></label>
    <var id="ohw05"></var>
  • vector詳解+題目

    介紹

    向量(Vector)是一個封裝了動態大小數組的順序容器(Sequence Container)。跟任意其它類型容器一樣,它能夠存放各種類型的對象。可以簡單的認為,向量是一個能夠存放任意類型的動態數組。

    順序序列
    順序容器中的元素按照嚴格的線性順序排序。可以通過元素在序列中的位置訪問對應的元素。

    vector是向量,即可變長數組 或者動態數組
    容器使用一個內存分配器對象來動態地處理它的存儲需求。

    vector的元素不僅可以是int,double,string,還可以是
    結構體(注意:結構體要定義為全局的,否則會出錯)。

    序號 功能 代碼樣例 效果介紹
    1 尾部插入 a.push_back(x) 在容器尾部插入一個值為x的元素
    2 中間插入 a.insert(a.begin()+i,x) 在第i個元素前插入x
    3 求長度 a.size() 返回元素個數
    4 刪除尾巴 a.pop_back() 刪除尾部的元素
    5 刪除某個元素 a.erase(v.begin()+i) 刪除下標為i位置的元素
    9 刪除某段 a.erase(v.begin()+l,v.begin()+r) 刪除下標[l,r)的元素
    10 清空 a.clear() 清空容器所有元素
    11 排序 sort(a.begin(),a.end()); 將a中元素按升序排列

    題目

    遞歸實現指數型枚舉

    此過程可以用遞歸加vector完成,用遞歸來確定選或不選,再用vector進行選或不選的添加和回溯

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    
    vector<int> a;
    void calc(int x){
    	if (x==n+1){
    		for (int i=0;i<a.size();i++)
    			printf("%d ",a[i]);
    		printf("\n");
    		return;
    	}
    	calc(x+1);
    	a.push_back(x);
    	calc(x+1);
    	a.pop_back();
    }
    
    int main(){
    	scanf("%d",&n);
    	calc(1);
    	return 0;
    }
    

    遞歸實現組合型枚舉

    老樣子,加一個剪枝即可

    #include <bits/stdc++.h>
    using namespace std;
    int n,m;
    
    vector<int> a;
    void calc(int x,int dis){
    	
    	if (dis==m){
    		for (int i=0;i<a.size();i++)
    			printf("%d ",a[i]);
    		printf("\n");
    		return;
    	}if (x==n+1)return;
    	a.push_back(x);
    	calc(x+1,dis+1);
    	a.pop_back();;
    	calc(x+1,dis);
    }
    
    int main(){
    	scanf("%d%d",&n,&m);
    	calc(1,0);
    	return 0;
    }
    
    posted @ 2022-06-28 11:29  hewt  閱讀(5)  評論(0編輯  收藏  舉報
    国产美女a做受大片观看