zoukankan      html  css  js  c++  java
  • 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
    ");
    		else
    			printf("Yes
    ");
    	}
    	return 0;
    }


     

  • 相关阅读:

    2018.10.18 常用API部分测试题
    2018.10.18课堂笔记HashMap之前
    JavaScript 的 this 原理
    vue h5转换uni-app
    Vue.js 3.0 新特性预览
    ES6模块与CommonJS的区别
    同源策略和跨域问题
    一口气了解 babel
    媒体查询,移动端常见布局以及其他
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6991653.html
Copyright © 2011-2022 走看看