蓝桥杯最大乘积

来源:互联网 发布:分布式关系型数据库 编辑:程序博客网 时间:2024/05/29 16:31

问题描述

  对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢?

输入格式

  第一行一个数表示数据组数
  每组输入数据共2行:
  第1行给出总共的数字的个数n和要取的数的个数m1<=n<=m<=15
  第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4

输出格式

  每组数据输出1行,为最大的乘积。

样例输入

1
5 5
1 2 3 4 2

样例输出

48

#include<cstdio>#include<algorithm>#define max(a,b)   (((a)>(b))?(a):(b))int n,m,s;int a[16],biao[16];void dfs(int t,int item){if(item==m){s=max(t,s);return;}for(int i=1;i<=n;i++){if(!biao[i]){biao[i]=1;dfs(t*a[i],item+1);biao[i]=0;  }}}int main(){int flag;scanf("%d",&flag);while(flag--){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]);dfs(1,0);ans=-100000;printf("%d",s);}return 0;} 

0 0
原创粉丝点击