中易网

最小花费问题,C或C++

答案:1  悬赏:80  
解决时间 2021-01-04 14:29
★问题描述:
某宠物公司给每只宠物都取了一个名字,名字由字母组成,每只宠物的名字
都必须不同。为了方便管理,公司现在需要将每只宠物的名字都刻在铁链上,雕刻每个字母的费用是不同的,为了减少开支,公司现在请你帮他们的宠物取名字,使总费用最少。
★实验任务:
对于给定的字母的花费,给n只宠物取名字,使总花费最小。
★数据输入:
第一行有两个整数n(1<=n<=10000),m(1<=m<=5000),表示有n只宠物需要取名,总共有m个字母,接下来一行有m个数表示雕刻每个字母所需的费用,每个字母的费用不大于100。
★结果输出:
将计算出的最小总花费输出到文件output.txt。
输入示例输出示例
input.txt
4 3
1 2 4
output.txt
8
最佳答案
输出到文件你自己改一下:

#include
#include

int* nbegin;
int* nend;
int c;
int sum;

int sumof(int* begin, int* end)
{
int i = 0;
while(begin != end)
i += *begin++;
return i;
}

int pred(const void* a, const void* b)
{
return *(const int*)a - *(const int*)b;
}

int get(int* begin, int* end, int ps, int* n)
{
int *p1,*p2;
int cur, added;

for(p1 = begin; p1 != end; ++p1)
{
added = 0;
cur = *p1 + sumof(nbegin, nend);
if(cur <= ps) {
*nend++ = *p1;
added = 1;
if(cur == ps) {
printf("第%d个名字: ", ++c);
for(p2 = nbegin; p2 != nend; ++p2)
printf("%d", (sum += *p2, *p2));
putchar('\n');
if(--*n <= 0) {
printf("整合最小花费: %d", sum);
return 0;
}
}
if(!get(begin, end, ps, n))
return 0;
}
if(added)
nend--;
}
return 1;
}

int main()
{
int* a, *p;
int n, m, i;

scanf("%d%d", &n, &m); // 输入n和m
a = (int*)malloc(sizeof(int)*m);
for(i = 0; i < m; ++i) // 输入m个字母
scanf("%d", &a[i]);
qsort(a, m, sizeof(int), pred);

nbegin = (int*)malloc(sizeof(int)*n);
nend = nbegin;
for(i = a[0]; i <= 0xFFFFFFF; ++i) {
for(p = a; p != a + n; ++p)
if(*p > i)
break;
if(!get(a, p, i, &n))
break;
}
free(a);
free(nbegin);
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下列文学常识有误的一项是( ) A.戴望
oppo ulike 2手机存储的根目录是哪儿
小学生不用食不言寝不语辩论
心曠神怡的意思是什么?心曠神怡的释义是什么
我没文化没钱没工作,一个人在外面怎么办
天津到杭州自驾怎么走
健身怎么把腿练细
进览的意思是什么啊?请解释下!
遵化各小区的房价现在都是多少,哪里最便宜
添福茶楼地址有知道的么?有点事想过去
单丝不成线 独木不成林后面怎么说
傲棄的意思是什么?傲棄的释义是什么啊?
以 我们班新来的老师 为题写一篇500字作文
dnf90版本剑宗时装怎么选择
求我的老婆是学生会长无修百度云
推荐资讯
驺虞的意思是什么?驺虞的释义是什么啊?
青鴛瓦的意思是什么?青鴛瓦的释义是什么啊?
Linda a什么Mary are fine?
关于卡西欧px300,请问有人知道它的额定输入
疯狂的石头中的光头男的行为与道哥的死亡的法
寺旁有一牛,二人抬木头,旧时有一人,火烧因
RAF/MEK/ERK的全称
潮爆发型地址有知道的么?有点事想过去
手机上的百度地图中没有“我的”按钮
一件风衣一般多少钱你们能接受,怎么感觉今年
布心小学地址在什么地方,我要处理点事
_MIke_﹝read﹞English rvery day
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?