Programmers多段歯ブラシ販売
12741 ワード
😄 第三段階はやっぱり難しくて面白い
最初はクリスマスツリーの問題だと思っていた.(図は木) でも問題をよく見ると、自分から親まで、お金を交代で分ける形の問題です. ・ ・ 自分のお金を0に初期化 残りが1元未満なら、私が最上階なら 保存できないので保存しなければならない しかし問題が終わった後、他の人が なぜですか?考えてみれば、どうせ0元なら、ずっと親になるし、0元を加えても同じだ. 筆者は、1元未満であれば、親にも上がらせないように条件を付けておけば、他の人もどうせ養育で親の数まで上がることはないので、上がらせたと思う. 💻完全なコード
string
使うべきだと思うmap
自分の親を貯める.map<string,int>
:自分が持っているお金map<string,string>
:自分の両親 m["-"] = 0;
for(int i=0;i<enroll.size();i++)
{
m[enroll[i]]=0;
parent[enroll[i]] = referral[i];
}
center
印刷する必要がないのかわからず、ずっと印刷しています.parent
も初期化した.(enroll, referral
ベクトル使用) for(int i=0;i<seller.size();i++)
{
string me = seller[i];
int coin = amount[i]*100;
while(me !="-" && coin/10 >= 1 )
{
m[me] += (coin - coin/10);
coin = coin/10;
me = parent[me];
}
m[me] += (coin);
}
while
ドアから逃げ出します.coin/10 >= 1
条件を与えていないことに気づいた.#include <string>
#include <vector>
#include <unordered_map>
#include <iostream>
using namespace std;
unordered_map<string,int>m;
unordered_map<string,string>parent;
vector<int> solution(vector<string> enroll, vector<string> referral, vector<string> seller, vector<int> amount) {
vector<int> answer;
m["-"] = 0;
for(int i=0;i<enroll.size();i++)
{
m[enroll[i]]=0;
parent[enroll[i]] = referral[i];
}
for(int i=0;i<seller.size();i++)
{
string me = seller[i];
int coin = amount[i]*100;
while(me !="-" && coin/10 >= 1 )
{
m[me] += (coin - coin/10);
coin = coin/10;
me = parent[me];
}
m[me] += (coin);
}
for(int i=0;i<enroll.size();i++)
{
answer.push_back(m[enroll[i]]);
}
return answer;
}
Reference
この問題について(Programmers多段歯ブラシ販売), 我々は、より多くの情報をここで見つけました https://velog.io/@luck2901/Programmers다단계-칫솔-판매テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol