邮票问题

来源:互联网 发布:java企业面试题 编辑:程序博客网 时间:2024/04/29 01:13

(一)   邮票问题(Problem Set 1746):

1.    问题描述

设有n种不同面值a1, a2,…, an的邮票,规定每封信最多贴m张邮票。对于给定的mn,求出最大的邮资连续区间。例如,给定n=3m=3,邮票面值分别为2, 3, 5,则最大的邮资连续区间为[213]

2.       具体要求

Input

输入的第一行是一个正整数n,表示测试例个数。接下来几行是n个测试例的数据,每个测试例的数据由两行组成,其中第一行含两个正整数nm (1<=n, m<=10),表示有n种邮票,每封信最多贴m张邮票;第二行含n个正整数,表示n种邮票的面值。同一行整数之间用一个空格隔开。

Output

对于每个测试例输出一行,含两个整数,依次为最大的邮资连续区间的下界和上界,当存在多个最大的邮资连续区间时,输出下界值最小的一个。同一行两个整数之间用一个空格隔开。

3.       测试数据

Sample Input

2
3 3
2 3 5
4 5
1 4 12 21

Sample Output

2 13

1 71

4.设计与实现的提示

(1)       可以有很多不同思路,其中一种为,从考虑某个面值能否被取到入手

5. 扩展内容

// fenjie.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

struct SE
{
 int start;
 int end;
};

bool zuhe(int num[],int lenth, int index, int n, int count)
{
 bool bFenjie = false;

 if(n == 0)
 { 
  return true;
 }

 if(n < 0)
 {
  return false;
 }

 for(int i=index; i<lenth && count!=0; i++)
 {
  bFenjie =  zuhe(num, lenth, i, n-num[i], count-1);
  if(bFenjie)
  {
   return true;
  }
 }

 return false;
}

int _tmain(int argc, _TCHAR* argv[])
{
 int longdistance = 0;

 int num[3] = {2,3,5};
 int count = 3;
 
 int max = num[2]*count;
 int min = num[0];
 vector<SE> vt;
 vector<SE> rt;


 while(min <= max)
 {
  bool bFenjie = false;
  bFenjie = zuhe(num, 3, 0, min, count);
  if(bFenjie == true)
  {
   if(vt.empty())
   {
    SE se = {min, min};
    vt.push_back(se);
   }
   (vt.end()-1)->end = min;
  }
  else
  {
   if(!vt.empty())
   {
    rt.push_back(vt.front()); 
   }
   vt.clear();
  }
  min++;
 }

 if(!vt.empty())
 {
  rt.push_back(vt.front()); 
 }
 
 for(vector<SE>::iterator it = rt.begin(); it != rt.end(); it++)
 {
  if( (it->end - it->start) > longdistance )
  {
   longdistance = it->end - it->start;
   min = it->start;
   max = it->end;
  }
 }

 cout<<"longist distance is "<<longdistance<<endl;
 cout<<"start: "<<min<<"  end: "<<max<<endl;

 cin.get();
 return 0;
}

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 初中学生数学差怎么办 孩子数学计算能力差怎么办 股票没有客户号怎么办 五岁宝宝鼻炎怎么办 孩子怕老师家长怎么办 孩子得了厌学症怎么办 幼儿不好好吃饭怎么办 孩子在学校胆小怎么办 孩子胆小没自信怎么办 特别倔强的学生怎么办 初中生注意力不集中怎么办 父母水平太低怎么办 父母不肯买电脑怎么办 与父母性格不合怎么办 父母和孩子吵架怎么办 如果有孩子离婚怎么办 离婚时成年孩子怎么办 父母离婚后孩子怎么办 父母吵架闹离婚怎么办 父母吵架后冷战怎么办 家里每天都吵架怎么办 夫妻因为钱吵架怎么办 离婚了很痛苦怎么办 身份证丢了怎么办离婚 和老婆离婚了怎么办 老婆跟前任联系怎么办 离异小孩上户口怎么办 离婚之后孩子户口怎么办 父母离婚孩子户口怎么办 夫妻离婚孩子户口怎么办 孩子有心理阴影怎么办 孩子心里有障碍怎么办 初中的孩子厌学怎么办 孩子抑郁了家长怎么办 大人得地图舌怎么办 孩子老挨欺负怎么办 工作做错了事情怎么办 父母和邻居吵架怎么办 父亲总是骂我怎么办 小孩依赖性太强怎么办 小孩子摔到头吐怎么办