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
  • 相关阅读:
    JS,Jquery获取各种屏幕的宽度和高度
    mysql存储html代码之导出后无法导入问题
    php之简单socket编程
    php单点登录SSO(Single Sign On)的解决思路
    php读取邮件
    YII框架的依赖注入容器
    YII框架的行为
    YII框架的事件机制
    YII框架的模块化技术
    mysql的索引
  • 原文地址:https://www.cnblogs.com/lcy0515/p/9179792.html
Copyright © 2011-2022 走看看