您的位置:首页 > 其它

Codeforces Round #119 (Div. 2) A. Cut Ribbon

2012-05-25 22:36 302 查看
卧槽,想了一晚上都没想出来,居然还去想背包,纯暴力用个递归什么的,技术弱没办法

最后还是看了哪位大神的解题报告才想出办法

言归正传

题目:http://codeforces.com/contest/189/problem/A

题目是给你一个多长的丝带,然后你要分成几段,且每段的长度必须满足等于a或者b或者c

求这个最大的段数

解法是枚举a和b的段数然后推出c的段数 ,这样能使复杂度为O(n^n)

然后求出最大的段数

代码如下:

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int a,b,c,d,i,j,k,m,n;
int main()
{
while(scanf("%d%d%d%d",&d,&a,&b,&c)==4)
{
int max=0;
for(i=0;i*a<=d;i++)
{
for(j=0;i*a+j*b<=d;j++)
{
if((d-i*a-j*b)%c==0)
{
if(i+j+(d-i*a-j*b)/c>max)
max=i+j+(d-i*a-j*b)/c;
}
}
}
printf("%d\n",max);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: