zoukankan      html  css  js  c++  java
  • 【解题报告】 小猫爬山

    【解题报告】 小猫爬山

    题目:小猫爬山

    解题思路:

    哪家会养这么重又这么多猫,只能说他们两个比较闲的无聊

    当然这道题就像猫一样,特别狡猾

    开始的时候我看到这个,想到了一个贪心做法,但是不管怎么改,答案就是改不对,经过前思后想,左顾右盼,我知道了真正的算法:搜索+剪枝

    恰好就是我不最擅长的算法!

    我就按照思路和书中所给的部分代码打出来了,当我提交上去的时候,一个大大的A字亮在我的眼前,没错

    AC代码

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    int c[20],cab[20],n,w,ans;
    void dfs(int now,int cnt)
    {
    	if(cnt>=ans)
    	return ;
    	if(now==n+1)
    	{
    		ans=min(ans,cnt);
    		return ;
    	}
    	for(int i=1;i<=cnt;i++)
    	{
    		if(cab[i]+c[now]<=w)
    		{
    			cab[i]+=c[now];
    			dfs(now+1,cnt);
    			cab[i]-=c[now];
    		}
    	}
    	cab[cnt+1]=c[now];
    	dfs(now+1,cnt+1);
    	cab[cnt+1]=0;
    }
    bool cmp(int a,int b)
    {
    	return a>b;
    }
    int main()
    {
    	cin>>n>>w;
    	for(int i=1;i<=n;i++)
    	cin>>c[i];
    	sort(c+1,c+1+n,cmp);
    	ans=n;
    	dfs(1,0);
    	cout<<ans<<endl;
    	return 0;
    }
    
  • 相关阅读:
    获取本地IP地址
    c#从服务器下载文件代码
    Jquery 树控件(Jquery)
    Request.ServerVariables 参数大全
    Developing for App StoreBuilding an App for the App Store02
    App Store1.11
    Basic Tasks1.6
    Design Patterns1.8
    Frameworks1.7
    App Design1.10
  • 原文地址:https://www.cnblogs.com/wweiyi2004/p/11403249.html
Copyright © 2011-2022 走看看