とりあえず一巡させると必ず一つはサラリーが求まるから、全部求まるまでループ。 他の人の解答見てmemsetの使い方を覚えた。
class CorporationSalary {
long long salary[50];
bool isdetermind(int numbers){
for(int i =0;i<numbers;i++) if(salary[i] == 0) return false;
return true;
}
public:
long long totalSalary(vector <string> relations) {
long long total = 0;
int num = relations.size();
for(int i=0;i<num;i++) salary[i] = 0;
// memset(salary,0,sizeof(salary));
int i = 0;
while(!isdetermind(num)){
i == num-1 ? i=0 : ++i;
if( salary[i] > 0) continue;
if(relations[i].find('Y') == string::npos) {
salary[i] = 1;
continue;
}
long long r = 0;
int flag = 0;
for(int j=0;j<relations[i].size();j++){
if(relations[i][j] == 'Y') {
salary[j] > 0 ? r += salary[j] : flag++;
}
}
if(flag == 0) salary[i] = r;
}
for(int k=0;k<num;k++) total += salary[k];
return total;
}
};