#include <stdio.h> |
#include <stdlib.h> |
#define MAXNUM 100 |
int n; //数字个数 |
int m; //回合数 |
int Num[MAXNUM]; //原始数据数组 |
int DescNum[MAXNUM]; //递减数据数组 |
int F[MAXNUM][MAXNUM]; //过程数组 |
void swap( int , int ); |
//交换两个整数 |
int max( int , int ); |
//取两个中的最大值 |
int main() |
{ |
int i,j; |
printf ( "输入数字的个数n(1-100):\n" ); |
scanf ( "%d" ,&n); |
printf ( "输入回合数m(1-100)<=n:\n" ); |
scanf ( "%d" ,&m); |
printf ( "输入n个原始序列:\n" ); |
for (i=1; i<=n; i++) |
{ |
scanf ( "%d" ,&Num[i]); |
} |
printf ( "输入n个递减的数字:\n" ); |
for (i=1; i<=n; i++) |
{ |
scanf ( "%d" ,&DescNum[i]); |
} |
for (i=1; i<=n; i++) |
{ |
for (j=i+1; j<=n; j++) |
{ |
if (DescNum[i]<DescNum[j]) |
{ |
swap(Num[i],Num[j]); |
swap(DescNum[i],DescNum[j]); |
} |
} |
} |
for (i=1; i<=n; i++) |
{ |
F[i-1][0]=0; |
for (j=1; j<=m; j++) |
F[i][j]=max(F[i-1][j],F[i-1][j-1]+Num[i]-DescNum[i]*(j-1)); |
} |
printf ( "得分:%d\n" ,F[n][m]+DescNum[1]); |
return 0; |
} |
void swap( int x, int y) |
{ |
int temp; |
temp = x; |
x = y; |
y = temp; |
} |
int max( int x, int y) |
{ |
if (x<y) |
return y; |
else |
return x; |
} |
初级程序员
by: 云代码会员 发表于:2015-06-19 15:24:13 顶(0) | 踩(0) 回复
不错
回复评论