zoukankan      html  css  js  c++  java
  • L3-001. 凑零钱(深度优先搜索)

        很普通的深搜,就是最后一个测试点需要注意一下,就是所有的钱加起来也满足不了需要付的钱,这样就不用深搜了,不然超时。首先一看时限200ms,就不用尝试java了,十有八九要超时。

    #include<bits/stdc++.h>
    using namespace std;
    int arr[10001];
    int sum, n, m, t, flag;
    int money[10001];
    int book[10001];
    bool compare(int a, int b)
    {
    	return a < b;
    }
    
    void dfs(int k)
    {
    	if (sum > m)	return ;
    	if (sum == m)
    	{
    		flag = 1;
    		printf("%d", money[0]);
    		for (int i = 1; i < t; ++i)
    		{
    			printf(" %d", money[i]);
    		}
    	}
    	else 
    	{
    		for (int i = k; i < n; ++i)
    		{
    			if (!book[i] && !flag)
    			{
    				book[i] = 1;
    				money[t++] = arr[i];
    				sum += arr[i];
    				dfs(k + 1);
    				sum -= arr[i];
    				money[--t] = 0;
    				book[i]= 0;
    			}
    		}
    	}	
    	
    }
    
    
    int main()
    {
    	scanf("%d %d", &n, &m);
    	int S = 0;
    	for (int i = 0; i < n; ++i)
    	{
    		scanf("%d", &arr[i]);
    		S += arr[i];
    	}
    	if (S < m) // 所有的钱加起来也满足不了需要付的钱,这样就不用深搜了,不加这个条件最后一个测试点超时
    	{
    		printf("No Solution
    ");
    	}
    	else
    	{
    		sort(arr, arr + n, compare); // 第三个参数可以不写,反正默认升序,写在这里方便参考降序,因为我会忘啊
    		dfs(0);
    		if (!flag)
    		{
    			printf("No Solution
    ");
    		}	
    	}
    	return 0;
    }
    题目链接地址https://www.patest.cn/contests/gplt/L3-001

    ========================================Talk is cheap, show me the code=======================================

    CSDN博客地址:https://blog.csdn.net/qq_34115899
  • 相关阅读:
    ajax实例2
    分页显示中关于"序号"的问题
    <s:property value=""/> 怎么截取返回值的固定长度的字符串
    py 的 第 13 天
    py 的 第 10 天
    py 的 第 8 天
    py 的 第 9 天
    py 的 第 7 天
    这几日英文大汇
    python第五天
  • 原文地址:https://www.cnblogs.com/lcy0515/p/9179792.html
Copyright © 2011-2022 走看看