贪心算法
实话说,对于贪心算法,我真的还是糊里糊涂的(_😉 。还没有好好沉淀,还没有内化,还没有升华。其实挺难过的,我对于写程序,真的怕死了,由此,这一周对于我,毫不客气地说是没有长进。我问,是不是我不能真正理解贪心算法呢?事实上,我知道,并不仅是如此,我清楚的知道主要原因是我的代码能力有限,对于基础知识不够熟练,也没有一些好用的技巧知识。虽然说是技巧,但事实上还不是一些必得掌握的知识呀。今天真的是有点沮丧了呢。
但是不错的是,我至少比之前尝试了更多的一些题目,英文的,真的把我搞得眼花缭乱的,头昏脑胀,我……
这周,怎么说呢,我最会的还是最初的那个。嘿嘿。其实这个上周就学了,但是我能说明白的就这个了,那就羞愧的再来总结一下这个好了:最优装载问题。
其实贪心算法大部分都是这个问题的,感觉差不多,当然了,也还有些大不相同的。
struct load{
int x;//编号
int w;//重量
}box[10000];
编号代码(这个编号代码真的很好用,用的也很普遍,超级好用)
bool cmp(load a,load b){
if(a.w<b.w)return true;else return false;}
bool cmp(load a,load b){
if(a.w<b.w)return true;else return false;}stable_sort(box+1,box+n+1,cmp);//注意左闭右开
while (scanf("%d%d",&c,&n)!=EOF){memset(box,0,sizeof(box));
memset(x,0,sizeof(x));
for(int i=1;i<=n;i++){scanf("%d",&box[i].w);
box[i].x=i;}
stable_sort(box,box+n+1,cmp);
if(box[i].w>c)
{printf("No answer!\n");continue;}
int i;
for(i=1;i<=n&&box[i].w<=c;i++){x[box[i].x]=1c=box[i].w;}
printf("%d\n",i-1);
;
for(i=1;i<=n;i++)
if(x[i])
printf("%d",i);
printf("\n");}