zoukankan      html  css  js  c++  java
  • 1268 和为K的组合

    给出N个正整数组成的数组A,求能否从中选出若干个,使他们的和为K。如果可以,输出:"Yes",否则输出"No"
    这个题简单的dfs即可
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N=100;
    int vis[N];
    int a[N];
    int n,sum;
    int dfs(int x,int k)
    {
    	//printf("%d
    ",k); 
    	if(x>=n||k>sum)
    	return 0;
    	if(k==sum)
    		return 1;
    	vis[x]=1;
    	for(int i=x+1;i<n;i++)
    	{
    		if(vis[i]==0&&(k+a[i])<=sum)
    		{
    			if(dfs(i,k+a[i]))
    			return 1;	
    		}
    		vis[i]=0;
    	}
    	return 0;
    }
    int main()
    {
    	while(scanf("%d %d",&n,&sum)!=EOF)
    	{
    		for(int i=0;i<n;i++)
    		scanf("%d",&a[i]);
    		int ans=0;	
    		for(int i=0;i<n;i++)
    		{	
    		    memset(vis,0,sizeof(vis));
    			ans=dfs(i,a[i]); 
    			if(ans==1)
    			break;
    		} 
    	   
    		if(ans)
    		{
    			printf("Yes
    ");
    		} 
    		else
    		printf("No
    ");
    	} 
    	return 0;
    } 


  • 相关阅读:
    01-面向对象
    12-期末作业
    11-Linux-vim /bash
    组播地址
    rip
    华为hcnp r&s考试一共有三门,R&S-IERS,R&S-IENP,R&S-IEEP

    spring注解开发
    yml和properties的加载顺序和区别
    @ImportResource
  • 原文地址:https://www.cnblogs.com/NaCl/p/9580122.html
Copyright © 2011-2022 走看看