• hdu 1518 Square


    Square

    Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 8260    Accepted Submission(s): 2687


    Problem Description
    Given a set of sticks of various lengths, is it possible to join them end-to-end to form a square?
     

    Input
    The first line of input contains N, the number of test cases. Each test case begins with an integer 4 <= M <= 20, the number of sticks. M integers follow; each gives the length of a stick - an integer between 1 and 10,000.
     

    Output
    For each case, output a line containing "yes" if is is possible to form a square; otherwise output "no".
     

    Sample Input
    3 4 1 1 1 1 5 10 20 30 40 50 8 1 7 2 6 4 4 3 5
     

    Sample Output
    yes no yes
     

    <span style="font-size:18px;">#include<stdio.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define M 25
    int a[M],vis[M];
    int n,m,sum;
    
    bool cmp(int x,int y)
    {
    	return (x>y);
    }
    
    int dfs(int ans,int cur,int num)  //ans表示当前位置 cur表示当前权值 num表示边数
    {  
    	int i;
    	if(num==4) return 1;
    	for(i=ans;i<n;i++)
    	{
    		if(vis[i]) continue;
    		if(cur+a[i]==m)  // 满足边长
    		{
    			vis[i]=1;
    			if(dfs(0,0,num+1))  // 找下一条边  
    				return 1;
    			vis[i]=0;
    		}
    		else if(cur+a[i]<m)   //不满足边长
    		{
    			vis[i]=1;
    			if(dfs(i,cur+a[i],num))
    				return 1;
    			vis[i]=0;
    		}
    	}
    	return 0;
    }
    
    
    int main ()
    {
    	int i,j,t;
    	cin>>t;
    	while(t--)
    	{
    		cin>>n;
    		sum=0;
    		for(i=0;i<n;i++)
    		{
    			cin>>a[i];
    			sum+=a[i];
    		}
    		if(sum%4!=0)
    			printf("no
    ");
    		else
    		{
    			m=sum/4;    // 边长
    			sort(a,a+n,cmp);
    			if(m<a[0])    // 最大的数大于边长肯定不满足
    				printf("no
    ");
    			else
    			{  
    				memset(vis,0,sizeof(vis));
    				if(dfs(0,0,0))
    					printf("yes
    ");
    				else
    					printf("no
    ");
    			}
    		}
    	}
    	return 0;
    }</span>


  • 相关阅读:
    ajax请求传参数复杂对象list,后端springmvc接收参数
    SpringBoot热部署简介
    lucene 初探
    学生管理系统导包
    tomcat加入系统服务+开机自启
    sql like模糊查询的条件拼接
    SSHDemo
    Spring在web开发中的应用
    Spring的Bean内部方法调用无法使用AOP切面(CacheAble注解失效)
    dwz tree组件 取得所选择的值
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6803655.html
Copyright © 2020-2023  润新知