吳若喬
deque & vector
使用vector實作一個程式將「台北市」、「新北市」、「台中市」、「台南市」與「高雄市」城市名稱依序轉成0到4的數字,通常用於將地名轉成數字,建立城市之間的圖形資料結構用,因為城市名稱不適合用於建立圖形資料結構,需將城市名稱轉換成數字,相同的城市名稱要對應相同數字,不同城市名稱對應不同數字。使用二維整數陣列就可以記錄圖形是否有邊相連,建立圖形資料結構。
deque & vector
//宣告
string s[5]={"台北市","新北市","台中市","台南市","高雄市"};
vector<string> v;
vector<string>::iterator it;
int getindex(string);//宣告
string s[5]={"台北市","新北市","台中市","台南市","高雄市"};
vector<string> v;
vector<string>::iterator it;
int getindex(string);//宣告
string s[5]={"台北市","新北市","台中市","台南市","高雄市"};
vector<string> v;
vector<string>::iterator it;
int getindex(string);deque & vector
int getindex(string city){
it=find(v.begin(),v.end(),city); //在vector裡尋找該城市(確認是否出現過)
if (it < v.end()) return it-v.begin(); //出現過就直接回傳當初儲存的位置
else if (it == v.end()){ //沒找到(即第一次加入vector)
v.push_back(city); //將city加入vector
return v.size()-1; //回傳(索引值)
}
}將城市轉為索引值後回傳
因此用int 函式
deque & vector
看一下是否符合:
for(int i=0;i<5;i++){
int index=getindex(s[i]);
cout << s[i] << " " << index <<endl;
}
for(int i=0;i<5;i++){
cout << i <<" " << v[i] <<endl;
} deque & vector
如果存在同樣城市?
string s[6]={"台北市","新北市","台中市","台南市","高雄市","新北市"};for(int i=0;i<6;i++){
int index=getindex(s[i]);
cout << s[i] << " " << index <<endl;
}
for(int i=0;i<6;i++){
cout << i <<" " << v[i] <<endl;
}deque & vector
實作一個程式將以下無向圖,儲存到deque陣列中,未來在圖形走訪單元就可以使用此deque陣列,進行圖形的深度優先走訪或廣度優先走訪。若輸入的點是字串名稱也沒關係,可以使用字串轉換成數字,再建立圖形。
deque & vector
deque<int> d[4];| d[0] | d[0][0] | d[0][1] |
|---|---|---|
| d[1] | d[1][0] | d[1][1] |
| d[2] | d[2][0] | d[2][1] |
| d[3] | d[3][0] | d[3][1] |
| d[0] | d[0][0] | d[0][1] |
|---|---|---|
| d[1] | d[1][0] | d[1][1] |
| d[2] | d[2][0] | d[2][1] |
| d[3] | d[3][0] | d[3][1] |
deque & vector
0 1
0 2
1 2
1 30
1
3
2
deque & vector
int x,y;
for(int i=0;i<4;i++){
cin >> x >> y;
F[x].push_back(y);
F[y].push_back(x);
}deque & vector
| d[0] | 1 | 2 | |
|---|---|---|---|
| d[1] | 0 | 2 | 3 |
| d[2] | 0 | 1 | |
| d[3] | 1 |
for(int i=0;i<4;i++){
cout << i << "=>";
for(int j=0;j<d[i].size();j++){
cout << d[i][j] << " ";
}
cout << endl;
} stack & queue
stack & queue
..p..p.p...q.q.
p、q配對 :
stack & queue
..p..p.p...q.q.
p、q配對 : 兩對
stack & queue
..p..p.p...q.q.
stack & queue
..p..p.p...q.q.
stack & queue
..p..p.p...q.q.
stack & queue
..p..p.p...q.q.
stack & queue
..p..p.p...q.q.
stack & queue
..p..p.p...q.q.
stack & queue
..p..p.p...q.q.
stack & queue
..p..p.p...q.q.
stack & queue
#include <bits/stdc++.h>
using namespace std;
stack<char> p;
char s[1000000000];
int main() {
long long int n,pair;
cin >> n;
for(int i=0;i<n;i++){
cin >> s;
pair=0;
while(!p.empty()) p.pop();
int j=0;
while(s[j] != '\0'){
if(s[j]=='p') {
p.push('p');
}
if(s[j]=='q') {
if (p.size()>0){
p.pop();
pair++;
}
}
j++;
}
cout << pair << endl;
}
}
set & map
使用map儲存a~g的ASCII碼,並使用指標寫法將其印出。set & map
set & map
vector<string> one,up; //一個紀錄指出現一次,一個儲存兩次以上
map<string,int> eng;