算法——贪心
来源:互联网 发布:网络龙虎斗如何作假 编辑:程序博客网 时间:2024/06/08 12:36
第一题 修理牛棚
在一个暴风雨的夜晚,农民约翰的牛棚的屋顶、门被吹飞了。好在许多牛正在度假,所以牛棚没有住满。剩下的牛一个紧挨着另一个被排成一行来过夜。有些牛棚里有牛,有些没有。所有的牛棚有相同的宽度。自门遗失以后,农民约翰很快在牛棚之前竖立起新的木板。他的新木材供应者将会供应他任何他想要的长度,但是供应者只能提供有限数目的木板。农民约翰想将他购买的木板总长度减到最少。给出 M(1<= M<=50)可能买到的木板最大的数目;S(1<= S<=200)牛棚的总数;C(1 <= C <=S) 牛棚里牛的数目,和牛所在的牛棚的编号stall_number(1 <= stall_number <= S),计算拦住所有有牛的牛棚所需木板的最小总长度。输出所需木板的最小总长度作为的答案。
程序:
#include <stdio.h>
void fun(int a[],int m,int s,int c)
{
int b[200];
int i,j,k,q,sum;
for(i=0;i<c-1;i++)
{
b[i]=a[i+1]-a[i]-1;
printf("%d\n",b[i]);
}
sum=s;
for(i=1;i<m;i++)
{
k=b[i-1];
for(j=i;j<c;j++)
{
if(b[j]>k)
{
q=b[j];
b[j]=k;
k=q;
}
}
sum-=k;
}
printf("%d\n",sum);
}
void main()
{
int d[200]={0};
int m,s,c,i,j;
scanf("%d%d%d",&m,&s,&c);
for(i=0;i<c;i++)
scanf("%d",&d[i]);
s=d[c-1]-d[0]+1;
fun(d,m,s,c);
}
第二题 删数问题
键盘输入一个高精度的正整数N(不超过240位),去掉其中任意S个数字后剩下的数字按左右次序组成一个新的正整数。对给定的N和S,寻找一种删数规则使得剩下得数字组成的新数最小。
程序:
#include <stdio.h>
void main()
{
char a[240],x;
int i=0,j,k,p,n;
x=getchar();
while(x!='\n')
{
a[i]=x;
i++;
x=getchar();
}
scanf("%d",&n);
for(j=0;j<n;j++)
{
p=0;
for(k=0;k<i-1;k++)
{
x=k;
if(a[k+1]<0)
k++;
if(a[k+1]<a[x])
{
a[x]=-1;
p=1;
break;
}
}
if(p==0)
{
i=i-n;
break;
}
}
for(j=0;j<i;j++)
{
if(a[j]>=0)
printf("%c",a[j]);
}
}
- 算法——贪心
- 贪心算法—导弹
- 总结—贪心算法
- 算法——贪心算法
- 算法导论—贪心算法
- 算法系列—贪心算法
- acm——贪心算法
- 算法——贪心策略
- 贪心算法——01
- 算法——贪心法
- 贪心算法—Problem A
- 贪心算法—Problem E
- 贪心算法—Problem C
- 贪心算法—Problem G
- 贪心算法—Problem Q
- 贪心算法—Problem F
- 贪心算法—Problem M
- 贪心算法—Problem N
- C语言和设计模式(之模板模式)
- C语言和设计模式(工厂模式)
- C语言和设计模式(责任链模式)
- C语言和设计模式(抽象工厂模式)
- 2012年7月20日7:08:09
- 算法——贪心
- vim的替换命令
- Ticker Tape
- paip.ASP加密新总结
- Intel并行编程及软件工具系列讲座观看指南
- VTune
- 你可能会浪费您的当前网站上的钱
- VTune安装
- vtune使用笔记