hdu 2094 产生冠军
本题链接:点击打开链接
本题大意:
有n名队员。已知每名队员打比赛的输赢,问,是否能据此确定冠军。
解题思路:
就是将全部比赛中失败过的做标记,据题知:失败过的就不可能再成为冠军,所以就看最后未标记的有几个,若仅仅有一个,则说明其就是所认定的冠军,否则就确定不了冠军。
主要是字符串难处理,详细请參见代码:
#include<stdio.h> #include<string.h> char str[1010][100]; char win[100],lose[100]; int mark[1010]; int main() { int n,i,sum; while(scanf("%d",&n),n) { i=0; memset(mark,0,sizeof(mark)); while(n--) { int flagw=0,flagl=0;//flagw 标记出现过的赢者,flagl标记出现过的输者 scanf("%s%s",win,lose); if(i==0) { strcpy(str[i++],win); strcpy(str[i++],lose); mark[i-1]=1;//mark loser; } else { for(int j=0;j<i;j++) { if(strcmp(str[j],win)==0) flagw=1; //标记已登记过的winer if(strcmp(str[j],lose)==0) { mark[j]=1; //标记输者 flagl=1; //标记已登记过的loser } } if(!flagw) strcpy(str[i++],win); if(!flagl) { strcpy(str[i++],lose); mark[i-1]=1; } } } sum=0; for(int j=0;j<i;j++) { if(mark[j]==0)//查找未被标记过的 sum++; } if(sum!=1)//若有多个未被标记。则无法确定冠军 printf("No\n"); else printf("Yes\n"); } return 0; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· Ai满嘴顺口溜,想考研?浪费我几个小时
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想