频道栏目
首页 > 程序开发 > 软件开发 > C++ > 正文
hdu 1085 Holding Bin-Laden Captive! 母函数的基本运用,,还是不难的
2015-03-04 09:25:11         来源:Lionel  
收藏   我要投稿

Holding Bin-Laden Captive!

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 16063 Accepted Submission(s): 7206


Problem Description We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But recently, it is reported that he hides in Hang Zhou of China!
“Oh, God! How terrible! ”

\


Don’t be so afraid, guys. Although he hides in a cave of Hang Zhou, he dares not to go out. Laden is so bored recent years that he fling himself into some math problems, and he said that if anyone can solve his problem, he will give himself up!
Ha-ha! Obviously, Laden is too proud of his intelligence! But, what is his problem?
“Given some Chinese Coins (硬币) (three kinds-- 1, 2, 5), and their number is num_1, num_2 and num_5 respectively, please output the minimum value that you cannot pay with given coins.”
You, super ACMer, should solve the problem easily, and don’t fZ喎"/kf/ware/vc/" target="_blank" class="keylink">vcmdldCB0byB0YWtlICQyNTAwMDAwMCBmcm9tIEJ1c2ghPGJyPgoKIAo8YnI+CklucHV0CklucHV0IGNvbnRhaW5zIG11bHRpcGxlIHRlc3QgY2FzZXMuIEVhY2ggdGVzdCBjYXNlIGNvbnRhaW5zIDMgcG9zaXRpdmUgaW50ZWdlcnMgbnVtXzEsIG51bV8yIGFuZCBudW1fNSAoMDw9bnVtX2k8PTEwMDApLiBBIHRlc3QgY2FzZSBjb250YWluaW5nIDAgMCAwIHRlcm1pbmF0ZXMgdGhlIGlucHV0IGFuZCB0aGlzIHRlc3QgY2FzZSBpcyBub3QgdG8gYmUgcHJvY2Vzc2VkLjxicj4KCiAKPGJyPgpPdXRwdXQKT3V0cHV0IHRoZSBtaW5pbXVtIHBvc2l0aXZlIHZhbHVlIHRoYXQgb25lIGNhbm5vdCBwYXkgd2l0aCBnaXZlbiBjb2lucywgb25lIGxpbmUgZm9yIG9uZSBjYXNlLjxicj4KCiAKPGJyPgpTYW1wbGUgSW5wdXQKCjxwcmUgY2xhc3M9"brush:java;">1 1 3 0 0 0
Sample Output
4
如果你刚学母函数的话,那这道题可能会是你的一道坎,,不要怕,最好别看别人的代码和题解,,若这题自己想通了,我想对母函数的理解,会到下一个层次的,加油吧 代码:
#include 
#define MAX 10100

int main()
{
	int c1[MAX] , c2[MAX] ,num[5] , a[]={0,1,2,5}; 
	while(~scanf("%d%d%d",&num[1],&num[2],&num[3]) &&(num[1]||num[2]||num[3]))
	{
		int m = num[1]*a[1]+num[2]*a[2]+num[3]*a[3] ;
		for(int i = 0 ; i <= m ; ++i)
		{
			c1[i] = 1 ;
			c2[i] = 0 ;
		}
		c1[m+1] = 0 ;
		int  len = num[1]*a[1] ;
		for(int i = 2 ; i <= 3 ; ++i)
		{
			len += num[i]*a[i] ;
			for(int j = 0 ; j <= len-num[i]*a[i] ; j++)
			{
				for(int k = 0 ; k+j <= len; k+=a[i])
				{
					c2[j+k] += c1[j] ;
				}
			}
			for(int j = 0 ; j <= len ; ++j)
			{
				c1[j] = c2[j] ;
				c2[j] = 0 ;
			}
		}
		for(int i = 0 ; i < MAX ; ++i)
		{
			if(c1[i] == 0)
			{
				printf("%d\n",i);
				break ;
			}
		}
	}
	return 0 ;
}

与君共勉
点击复制链接 与好友分享!回本站首页
相关TAG标签 函数 还是
上一篇:C. DNA Alignment 数学公式推导 Codeforces Round #295 (Div. 2)
下一篇:bzoj 1018 堵塞的交通traffic
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站