产生冠军 map 的 应用 .
开始 比赛 , 每一次的 比赛 都会有人失败 , 如果产生英雄的话 , 那就是产生 唯一一个 没有被打败的人 , 就是英雄, .
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<queue> 7 #include<vector> 8 #include<set> 9 #include<stack> 10 #include<string> 11 #include<sstream> 12 #include<map> 13 #include<cctype> 14 #include<limits.h> 15 using namespace std; 16 int main() 17 { 18 int n; 19 while(scanf("%d",&n),n) // 多学习一点 容器 ... 20 { 21 map<string,int>mm; // 用 一个 map 去做映射 ........ // map 做映射的时候 默认的值 就是 0 22 for(int i=0;i<n;i++) // 开始 n 对 对手 之间的博弈 . 23 { 24 char a[100],b[100]; 25 scanf("%s%s",a,b); // 26 mm[a]++; // 27 mm[b]=INT_MIN; // 28 } 29 map<string,int>::iterator it; // 相当于 声明一个 类似于 指针的 东西 . 30 int ans=0; 31 for(it=mm.begin();it!=mm.end();it++) // 从 开始的地方开始 , 32 if((it->second)>0) // 每一次 都 向下 , 寻找 . 33 ans++; 34 if(ans==1) 35 printf("Yes\n"); // // 当 最后 只有一个人没有被打败过 这个人就是 第一 36 else 37 printf("No\n"); 38 } 39 }