用c实现背包问题(贪心)
好久以前做的一个程序,贪心策略实现背包问题,c实现。
总结在这里,以备以后和别人查找。
//背包问题
#include "stdio.h"
#define MAX 10
void main()
{
int w[MAX]={0,10,130,15,60,25}; //存放质量
int v[MAX]={0,30,5,10,20,25}; //存放价值
float a[MAX]={0}; //存放取的量,即输出结果。
int m,n,i,max;
m=100;n=5;
/*
scanf("%d %d",&m,&n);
for(i=1;i<=n;i++)
scanf("%d",&w[i]); //重量和价值都从1号开始存,零号(=0)空下,一会做max
for(i=1;i<=n;i++)
scanf("%d",&v[i]);*/
for(i=1;i<=n;i++)
printf("%d: %d ",w[i],v[i]);
do{
max=0;
for(i=1;i<=n;i++)
if(v[i]>v[max])
{
max=i;
}
v[max]=0;
if(m>=w[max]) //如果够放。
{
m-=w[max];
a[max]=1;
}
else
{
//这样得到一个负值,就会do while跳出循环。
a[max]=((float)m)/w[max];
m-=w[max];
}
}while(m>0);
printf("\nThe result is:\n");
for(i=1;i<=n;i++)
printf("%f ",a[i]);
}
相关文档:
最近一直忙毕业的相关事情,加上工作,转眼间,又到月底了,之前承诺的每月一篇博文,前几天就一直在寻找到底要写什么,近两天又突然发现有很多东西可以写。本篇就先延续之前的一篇基于Cookie的安全检查机制(深入C/C++之基于Cookie的安全检查(VS2005))来介绍下另外一种在DEBUG版本下的安全检查,也就是CheckStackVars检 ......
学东西,往往实例才是最让人感兴趣的,老是学基础理论,不动手,感觉没有成就感,呵呵。
下面先来一个实例。我们通过创建两个线程来实现对一个数的递加。
或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉。
下面是我们的代码:
/*thread_example.c : c multiple thread p ......
1.首先看懂官方文档
2.icbc.jar这个jar包一定要要到!这是进行base64加密解密,以及
使用工行证书签名的重要工具类。
3.采取纯Java编码,要确保用对证书,放在D盘根目录下(其他路径亦可)。
4.编写JSP接口页面,字段必须与工行的一一对应。
而且如tranData等字段进行base64加密后或者签名后 必须以"“双引号扩上才 ......
Technorati 标签: C++ 原文地址:http://www.byvoid.com/blog/c-int64/ 在C/C++中,64为整型一直是一种没有确定规范的数据类型。现今主流的编译器中,对64为整型的支持也是标准不一,形态各异。一般来说,64位整型的定义方式有long long和__int64两种(VC还支持_int64),而输出到标准输出方式有printf(“%lld”,a),printf ......