【CSDN】每日一练(9)

目录

第一题

总分数最大

题目描述

输入描述

输出描述

题解

第二题

动态规划-硬币重量最轻问题

题目描述

输入描述

输出描述

题解

第三题

熊孩子拜访

题目描述

输入描述:

输出描述:

输入样例

输出样例

题解

第四题

合并序列

题目描述

输入描述:

输出描述:

输入样例

输出样例

题解


第一题

总分数最大

题目描述

每位同学都有自己的一个幸运数,乐乐所在班级共有n位同学,因此有编号为1至n的n块标牌,标牌的编号与自己的幸运数相乘,就是这位同学的分数。你的工作就是帮乐乐寻找一种方案,使得班级总分数最大。 

输入描述

每位同学都有自己的一个幸运数,乐乐所在班级共有n位同学,因此有编号为1至n的n块标牌,标牌的编号与自己的幸运数相乘,就是这位同学的分数。你的工作就是帮乐乐寻找一种方案,使得班级总分数最大。 

输出描述

只有一行且只有一个整数,乐乐班级的总分数。

题解

#include<stdio.h>
int main()
{
	int a[10005];
	long long t=0;
	int n,i,j,x;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			if(a[i]<a[j]){
	x=a[i];
	a[i]=a[j];
	a[j]=x;
}
		}
	}
	for(i=0;i<n;i++)
	{
		t+=a[i]*(i+1);
	}
	printf("%lld",t);
	return 0;
}

第二题

动态规划-硬币重量最轻问题

题目描述

设有n种不同面值的硬币,第i种硬币的币值是Vi(其中V1=1),重量是Wi,i=1,2,...n且现在购买某种总币值为y的商品,需要用这些硬币付款,如果每种钱币使用的个数不限,那么如何选择付款的方法使得付出钱币的总重量最轻?使用动态规划设计策略设计一个求解该问题的算法。

输入描述

假设问题的输入实例是:

V1=1, V2=4, V3=6, V4=8

W1=1, W2=2,W3=4,W4=6

Y=12

输出描述

要求输出优化函数表和标记函数表、以及硬币支付方式。

题解

#include <stdio.h>
void strcpy(int *a, int *b, int Y)
{
	for (int i = 0; i <= Y; i++)
		*(a + i) = *(b + i);
}
void solve()
{
    int n;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值