zoukankan      html  css  js  c++  java
  • Triangle LOVE

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)

    Total Submission(s): 3574    Accepted Submission(s): 1401


    Problem Description
    Recently, scientists find that there is love between any of two people. For example, between A and B, if A don’t love B, then B must love A, vice versa. And there is no possibility that two people love each other, what a crazy world!
    Now, scientists want to know whether or not there is a “Triangle Love” among N people. “Triangle Love” means that among any three people (A,B and C) , A loves B, B loves C and C loves A.
      Your problem is writing a program to read the relationship among N people firstly, and return whether or not there is a “Triangle Love”.
     

    Input
    The first line contains a single integer t (1 <= t <= 15), the number of test cases.
    For each case, the first line contains one integer N (0 < N <= 2000).
    In the next N lines contain the adjacency matrix A of the relationship (without spaces). Ai,j = 1 means i-th people loves j-th people, otherwise Ai,j = 0.
    It is guaranteed that the given relationship is a tournament, that is, Ai,i= 0, Ai,j ≠ Aj,i(1<=i, j<=n,i≠j).
     

    Output
    For each case, output the case number as shown and then print “Yes”, if there is a “Triangle Love” among these N people, otherwise print “No”.
    Take the sample output for more details.
     

    Sample Input
    2 5 00100 10000 01001 11101 11000 5 01111 00000 01000 01100 01110
     

    Sample Output
    Case #1: Yes Case #2: No



    #include<stdio.h>
    #include<string.h>
    char p[2001][2001];
    int s[2001],m;
    void TO(int n)
    {
    	int flag=0;
    	int i,j,k;
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<n;j++)
    		if(s[j]==0)
    		break;
    		if(j==n)
    		{
    			flag=1;
    			break;
    		}
    		s[j]=-1;
    		for(k=0;k<n;k++)
    		if(p[j][k]=='1'&&s[k]!=0)
    		s[k]--; 
    	}
    	printf("Case #%d: ",++m);
    	if(flag) printf("Yes
    "); 
    	else printf("No
    ");
    	
    }
    int main()
    {
    	int t,n;
    	m=0;
    	scanf("%d",&t);
    	while(t--)
    	{
    		memset(s,0,sizeof(s));
    		scanf("%d",&n);
    		for(int i=0;i<n;i++)
    		{
    			scanf("%s",p[i]);
    			for(int j=0;j<n;j++)
    			{
    				if(p[i][j]=='1')
    				s[j]++;
    			}
    		}
    		TO(n);
    	}
    	return 0;
    }


    再贴一个代码:

    #include<stdio.h>
    #include<string.h>
    char p[2001][2001];
    int s[2001],m;
    void TO(int n)
    {
    	int flag=0,i,j,k,w=1000000,h;
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<n;j++)
    		if(s[j]==0)
    		{
    			w=j;break;
    		}
    		else w=1000000;
    		if(w==1000000)
    		{
    			printf("Case #%d: ",++m);
    			printf("Yes
    ");
    			return ;
    	     }
    		s[w]=-1;
    		for(k=0;k<n;k++)
    		if(p[w][k]=='1')
    		s[k]--; 
    	}
    	printf("Case #%d: ",++m);
    	printf("No
    ");
    	return ;
    }
    int main()
    {
    	int t,n;
    	m=0;
    	scanf("%d",&t);
    	while(t--)
    	{
    		memset(s,0,sizeof(s));
    		scanf("%d",&n);
    		for(int i=0;i<n;i++)
    		{
    			scanf("%s",p[i]);
    			for(int j=0;j<n;j++)
    			{
    				if(p[i][j]=='1')
    				s[j]++;
    			}
    		}
    		TO(n);
    	}
    	return 0;
    }

    问题 B: 此题乃神题,劝你别做

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 137  解决: 8
    [提交][状态][讨论版]

    题目描写叙述

    声明:这道题没有涉及不论什么算法!给定函数f = (1) + (2) * b + (3) * c + (4) * d + (5)。

    输入

    输入数据有多组, 每组数据有5个整数,分别相应函数f 中(1)、(2)、(3)、(4)、(5)。

    输出

    输出f的表达式,详细看给出的例子输出,不要有多余的符号。

    例子输入

    2 3 -3 4 -5
    1 2 3 -4 5
    2 0 2 2 2

    例子输出

    2+3b-3c+4d-5
    1+2b+3c-4d+5
    2+2c+2d+2

    #include<stdio.h> 
    #include<string.h>
    char a[100000],b[100000],c[100000],d[100000],e[100000];
    int main()
    {
    while(scanf("%s%s%s%s%s",a,b,c,d,e)!=EOF)
    {
    if(strcmp(a,"1")==0&&strcmp(b,"1")==0&&strcmp(c,"1")==0&&strcmp(d,"1")==0&&strcmp(e,"1")==0)
    {
    printf("0 ");
    continue;
    }
    if(a[0]=='0');
    else
    printf("%s",a);
    if(b[0]=='0');
    else if(b[0]=='-')
    {
    if(strcmp(b,"-1")==0)
    printf("-b");
    else
    printf("%sb",b);
    }
    else if(strcmp(b,"1")==0)
    printf("+b");
    else
    printf("+%sb",b);
    if(c[0]=='0');
    else if(c[0]=='-')
    {
    if(strcmp(c,"-1")==0)
    printf("-c");
    else
    printf("%sc",c);
    }
        else {
        if(strcmp(c,"1")==0)
        printf("+c");
       else
         printf("+%sc",c);
        }
      if(d[0]=='0');
    else if(d[0]=='-')
    {
    if(strcmp(d,"-1")==0)
    printf("-d");
    else
    printf("%sd",d);
    }
    else if(strcmp(d,"1")==0)
       printf("+d");
       else
      printf("+%sd",d);
      if(e[0]=='0');
    else if(e[0]=='-')
    printf("%s",e);
    else printf("+%s",e);
    printf(" ");
    }
    return 0;
    }

  • 相关阅读:
    读本地json的方法
    告诉你如何应对HR索要薪资证明!
    函数声明与函数表达式
    原型的动态性
    工作实际需求andjs进阶图书
    表单元素操作,button,点击下载按钮实现-长知识
    grunt注意要点
    重新认识块级元素--DIV
    GO语言学习:变量间赋值
    GO语言学习:单通道
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7102159.html
Copyright © 2011-2022 走看看