中南大学复试C语言上机题——捡石子
来源:互联网 发布:淘宝答题红包 编辑:程序博客网 时间:2024/05/19 12:17
题目描述
在一个圆形操场的四周摆放着 n堆石子。 现要将石子有次序地合并成一堆。 规定每次选2 堆石子合并成新的一堆,合并的费用为新的一堆石子数。试设计一个算法,计算出将 n堆石子合并成一堆的最小总费用。
输入
输入数据第1行有1个正整数 n(1≤n≤1000),表示有 n堆石子,每次选2堆石子合并。第2行有 n个整数, 分别表示每堆石子的个数(每堆石子的取值范围为[1,1000]) 。
输出
数据输出为一行, 表示对应输入的最小总费用。
样例输入
745 13 12 16 9 5 22
样例输出
313
代码
#include<stdio.h>int n = 0 ;int main(){int arry[20],i=0;int sumCost(int arry[],int n ) ; int findMinSum(int arr[]) ;int cost =0 ;printf("请输入堆的个数");scanf("%d",&n) ;printf("请依次输入每个堆") ;for(i;i<n;i++) scanf("%d",&arry[i]) ; cost = sumCost(arry,n);printf("最小花费为:%d",cost) ;}int sumCost(int arr[],int n){ int sum = 0 ; int x =0; int costsum = 0 ; int costArr[20] ; while(x<n-1) { sum+=findMinSum(arr) ; x++ ; } return sum ; }int findMinSum(int arr[]){ int i=0,j=0,min=0,recordi=0; int minNum[2] ; int sum = 0 ; if(n<=2) { return arr[0]+arr[1] ; }else { while(j<2) { min=100000; for(i=0;i<n;i++) { if(arr[i]<min && arr[i]!=-1) { min=arr[i] ; // printf("-----%d min",arr[i]) ; minNum[j] = arr[i] ; recordi = i ; } } j++; arr[recordi]= -1 ; } arr[recordi] = minNum[0]+minNum[1] ; } return minNum[0]+minNum[1] ;}
0 0
- 中南大学复试C语言上机题——捡石子
- 安全密码(2013中南大学研究生复试上机题)
- 水仙花数(2013中南大学研究生上机复试题)
- 最少钱币数 (2013中南大学年研究生上机复试题[暴力])
- 北京航空航天大学 2008年复试上机题 解题报告
- 北京航空航天大学 2009年复试上机题 解题报告
- 北京航空航天大学 2012年复试上机题 解题报告
- 中南大学2015年研究生复试淘汰率将超40%
- CSU 1869 中南大学网络赛C题 树上最大值
- 浙江大学研究生复试上机真题——1975:ZOJ
- 二叉排序树——华中科技大学计算机历年考研复试上机题
- 北京邮电大学2010年网院方向复试上机题 解题报告
- 北京邮电大学2010年计算机方向复试上机题 解题报告
- 北京邮电大学2011年网院方向复试上机题 解题报告
- 中南大学 计算机 数据结构真题
- 回文串问题(2013中南大学研究生复试题)
- 中南大学2012年8月月赛 C题 Caps Lock 模拟
- 华科软院部分复试上机题
- Codeforces Beta Round #1 A,B,C
- python学习第一周--需求分析
- windows下安装双版本anaconda,以及配置jupyter notebook的kernel
- 大话设计模式之简单的工厂模式
- listview学习之arrayadapter初探
- 中南大学复试C语言上机题——捡石子
- 同学的阿里面试总结
- Eclipse环境下
- 数据结构--排序算法(插入排序&&选择排序)
- selenium服务器的启动
- PHP 环境搭建
- 杭电ACM 1069Monkey and Banana
- 机器学习中的回归(regression)与分类(classification)问题
- linux下的基本操作07(vim)