ノー友人にハンサム
ブルース忙しい送信写真は友人の私のサークルで、理由はハンサムなしの友人の何人かの人々が常に存在しているとき。この質問はありません友人にハンサムなものを同定する必要があります。
入力フォーマット:
最初の行の入力をN(≦100)の整数正が与えられ、既知の友人の数が円であり、その後、N行を、それぞれ最初の行は、友人の円として、K(≤1000)整数正与えられます数は、すべての友人リストの円の-便宜上、各空間によるパーティションID(0万から99,999まで)の間に、5桁のID番号に対応する;任意の正の整数M(後人々の数を照会するよう≤10000); M IDの次に記載されている行は、スペースで区切られた、照会することができます。
注:単に「友人の輪」をインストールすることはできません何の友人は、それは友人の自身の円の中に一人だけになることはできません。ありますが、個々のナルシストを繰り返し追加友人の自分のサークルを所有することになるが、問題は、友人のすべてK以上の円は、少なくとも二つの異なる人々を持っていることを確実にするために。
出力フォーマット:
ハンサムな友人なかった人たちの出力に順次入力。パーティションIDとの間のスペース、そして最後の行に余分なスペースを持っていないかもしれません。誰がハンサムでない場合は、出力No 1はハンサムです。
注:同じ人がなく、出力のみに一度、数回照会することができます。
サンプル入力1:
3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
8
55555 44444 10000 88888 22222 11111 23333 88888
出力サンプル1:
10000 88888 23333
サンプル入力2:
3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
4
55555 44444 22222 11111
出力サンプル2:
No one is handsome
口で言うだけなら簡単です。私のコードを表示します。
#include<iostream>
#include<set>
using namespace std;
int main()
{
int n=0;
cin>>n;
set<int> no_handsome;
for(int i=0;i<n;i++)
{
int k=0;
cin>>k;
for(int j=0;j<k;j++)
{
int temp=0;
cin>>temp;
if(k>1)
{
no_handsome.insert(temp);
}
}
}
int m=0;
cin>>m;
set<int> handsome;
bool flag=true;
for(int i=0;i<m;i++)
{
int temp;
cin>>temp;
if(no_handsome.find(temp)==no_handsome.end())
{
if(handsome.find(temp)==handsome.end())
{
if(!flag)
{
cout<<" ";
}
printf("%05d",temp);
flag=false;
}
handsome.insert(temp);
}
}
if(handsome.size()==0)
{
cout<<"No one is handsome";
}
}
問題解決のためのアイデア
どのような条件の下では何の友人を見つけるしないためにハンサムで非常に重要であり、あなたはまた、逆の考え方を使用することができます。タイトルから知ることができる、友人のない友人のサークルやサークルは、彼だけはハンサムな男性のない友人ではない、と入力円が1で二つの異なる人々を持っている必要があります友人の数よりも多いので、友人の数が1つの以上の円を持っていることを保証するために、私達はちょうどno_handsomeにこれらの人々を置くように、友人や人々がすることができ、素晴らしい人を言います。注:円はまだこの個人を受信したい友人の数に等しいことは、単にダウン午前1時00 no_handsomeにではありません。誰が、その後no_handsomeにない入力をチェックするたびに出力されていない友人にハンサムで、私たちは人のいない友人にもハンサムを超える出力するかどうかをチェックするために、各出力の前に、ハンサムに自分自身を整理する必要があります。それハンサム出力内の誰場合:誰がハンサムではありません。
コードの解釈の一部
1。
if(handsome.find(temp)==handsome.end())
{
if(!flag)
{
cout<<" ";
}
printf("%05d",temp);
flag=false;
}
各出力は、私がここに持っているスペースを制御するために、あまりにも出力するかどうかを確認し、注意を払うする前に第一の出力、すべての後続の出力の前に出力スペースではありません。
エラーが発生しやすいポイント
1。
案の定、intは容易ではない使用しており、0出力の前にいくつかの数字は、我々は0を追加する必要があります。文字列とのトラブルを持っていないでしょう。printfの書式制御は、個人的にはcoutより少し利便性の面や小数でそれを感じます。