前言:
✌ 作者简介:CC++Edge淇,大家可以叫我--斯淇。(CSDN优质博客的建议加这一条)
📑 个人主页:CC++Edge淇主页
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥 如果感觉博主的文章还不错的话,还请不吝👍关注、点赞、收藏三连支持👍一下博主哦
💬 人生格言:琴键有限,人生无限--《海上钢琴师》💬
————————————————
🎉🎉欢迎持续关注🎉🎉 | |
🎉 隐约雷鸣 🎉 阴霾天空 🎉 | |
🎉 但盼风雨来 🎉 能留你在此 🎉 |
目录
题目描述(金币)
在很久很久以前,有 nn 个部落居住在平原上,依次编号为 11 到 nn。第 ii 个部落的人数为 t_iti。
有一年发生了灾荒。年轻的政治家小蓝想要说服所有部落一同应对灾荒,他能通过谈判来说服部落进行联合。
每次谈判,小蓝只能邀请两个部落参加,花费的金币数量为两个部落的人数之和,谈判的效果是两个部落联合成一个部落(人数为原来两个部落的人数之和)。
输入描述
输入的第一行包含一个整数 nn,表示部落的数量。
第二行包含 nn 个正整数,依次表示每个部落的人数。
其中
输出描述
输出一个整数,表示最小花费。
输入输出样例
示例 1输入
4
9 1 3 5
输出
31
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
思路:通过for循环去找这个最小值,通过最小值来讲所有的解列出,中间看好条件的需要,将条件设计成问题所需要的条件,进行最后一步输出,但是要注意这里J需要自减,最后一步需要从1开始循环,不然最终会输出33这个答案!
说白了你得去判断(每次的剩余天数和n的关系即可)!!!
代码如下!!
1. #include<stdio.h>
2. int main(){
3. int i,j,sum,num,a[1001],k;
4. int n,m;
5. scanf("%d",&n);
6. for(i=0;i<n;i++)
7. scanf("%d",&a[i]);
8. for(i=0;i<n;i++){
9. for(j=0;j<n-1;j++){
10. if(a[i]>a[j+1]){
11. k=a[j];
12. a[j]=a[j+1];
13. a[j+1]=k;
14. }
15. }
16. }
17. j=n-1;
18. k=(a[0]+a[1])*j;
19. j--;
20. for(i=1;i<n;i++){
21. k+=(a[i]*j);
22. j--;
23. }
24. printf("%d",k);
25. return 0;
26. }
上测试图片!!!!
在蓝桥杯官方里面是可以检测通过的!!!
题目描述(工资)
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币......;这种工资发放模式会一直这样延续下去:当连续 NN 天每天收到 NN 枚金币后,骑士会在之后的连续 N+1N+1 天里,每天收到 N+1N+1 枚金币。
请计算在前 KK 天里,骑士一共获得了多少金币。
输出
输入只有 1 行,包含一个正整数 K\ (1 \leq K \leq 10^4)K (1≤K≤104),表示发放金币的天数。
示例 1
6
输出
14
解析:使用枚举去将所有的可能性列举出来!
将六天分开来看,第一天为一枚,后两天为两枚,后三天为三枚..一直在递增可以设为i为变量
每天可以设置j进行枚举,在for循环里面进行条件的摘除!(注意别超时)
测试可以通过上代码!!
1. #include<stdio.h>
2. int main(){
3. int i,j,k,sum=0,n,num=0,ans=0;
4. scanf("%d",&n);
5. for(i=1;i<=n;i++){
6. for(j=1;j<=i;j++){
7. num+=i;
8. sum++;
9. if(sum==n){
10. printf("%d",num);
11. return 0;
12. }
13. }
14. }
15. return 0;
16. }
今天先到这里明天继续!!!!!!!!!等我更新!!