誰がやっているようです
M A Pがないと、反映します
m個のA のpは互いに素セットに係合反映します!
M Aは、P-最初の利点は、配列として、あなたは多くを開くことができるということです!
私は思います
m個のAは、P-はあなたが大規模な配列を開きたい場合は、特に良いことですが、爆発する、それは使用するのが最適です
M A Pは、それが規則的なアレイとして使用することができます。
例えば:
map<int,int>x;
あなたは、xと通常の配列として配列を考えるが、それに注意を払うことができます。
map<int,int>x;
あなたはXの配列を定義した後、あなたはそのようにmemsetとして、配列関数、C ++を使用することはできません
あなたは書くことができません
memset(a,0,sizeof(a));
M A P A第2の利点は、必ずしも整数インデックスが偶数列とすることができるではありません!
M A P<インデックスタイプ
、数値型
>;
例えば:
map<string,char>a;
string st="123";
a[st]='1';
サプリメント
M A Pにのみ1次元配列を開くことができる、二次元アレイは、開いていてもよいです。
例えば:
map<int,map<int,int> >;
この知識ベースでは、我々はより簡単にこの質問を行うことができます。
まず、タイトルはトラバーサルを見るために、私たちは本能的に考える互いに素セット
互いに素セットが再帰の形でマップ全体をトラバースするアルゴリズムであり、我々は、サブツリーのルートとして右にトラバース互いに素、設定された第1の息子を聞かせて、ばらばらのセットは、最初の左部分木のルート息子を横断してみましょうので、我々は、この互いに素-設定コードを持っています。
void find(char ch){
cout<<ch;
if(x[ch]!='*')find(x[ch]);
if(y[ch]!='*')find(y[ch]);
}
もちろん、私が使用します
M A P、
X [ C H ]表します
C Hは、彼の息子を残しました
Y [ C Hは]表します
C H右の息子。
それは便利ではないですか?
m個のAは、P-は良いことです!
とともに
M A Pは、互いに素なセット、フレームとプログラムと、コードが自然に浮上しました。
#include <bits/stdc++.h>
using namespace std;
map<char,char>x;
map<char,char>y;
char a[35];
void find(char ch){
cout<<ch;
if(x[ch]!='*')find(x[ch]);
if(y[ch]!='*')find(y[ch]);
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
char left,right;
cin>>a[i]>>left>>right;
x[a[i]]=left;
y[a[i]]=right;
}find(a[1]);
return 0;
}