历年NOIP-CSP普及-提高初赛真题_第1页
历年NOIP-CSP普及-提高初赛真题_第2页
历年NOIP-CSP普及-提高初赛真题_第3页
历年NOIP-CSP普及-提高初赛真题_第4页
历年NOIP-CSP普及-提高初赛真题_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

历年NOIP/CSP普及/提高初赛真题

普及组(120分钟)

1在以下各项中,()不是CPU的组成部分

A.控制器

B.运算器

C.寄存器

D.主板

本题共1分

第2题

在关系数据库中,存放在数据库中的数据的逻辑结构以()为主。

A.二叉树

B.多叉树

C.哈希表

D.二维表

本题共1.5分

第3题

在下列各项中,只有()不是计算机存储容量的常用单位。

A.Byte

B.KB

C.UB

D.TB

本题共1.5分

第4题

ASCII码的含义是(卜

A.二6十进制转换码

B.美国信息交换标准代码

C.数字的二进制编码

D.计算机可处理字符的唯一编码

本题共1.5分

第5题

一个完整的计算机系统应包括(卜

A.系统硬件和系统软件

B.硬件系统和软件系统

C.主机和外部设备

D.主机、键盘、显示器和辅助存储器

本题共1.5分

第6题

IT的含义是(卜

A.通信技术

B.信息技术

C.网络技术

D.信息学

本题共1.5分

第7题

LAN的含义是(卜

A.因特网

B.局域网

C.广域网

D.城域网

本题共1.5分

第8题

冗余数据是指可以由其它数据导出的数据。例如,数据库中已存放了学生的数学、

语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数

据。冗余数据往往会造成数据的不一致。例如,上面4个数据如果都是输入的,

由于操作错误使总分不等于三科成绩之和,就会产生矛盾。下面关于冗余数据的

说法中,正确的是(卜

A.应该在数据库中消除一切冗余数据

B.用高级语言编写的数据处理系统通常比用关系数据库编写的系统更容易消

除冗余数据

C.为了提高查询效率,在数据库中可以保留一些冗余数据,但更新时要做相容

性检验

D.做相容性检验会降低效率,可以不理睬数据库中的冗余数据

本题共1.5分

第9题

在下列各软件,不属于NOIP竞赛(复赛)推荐使用的语言环境有(卜

编者注:这是2007年

A.gcc

B.g++

C.TurboC

D.FreePascal

本题共1.5分

第10题

以下断电后仍能保存数据的有(卜

A.硬盘

B.高速缓存

C.显存

D.RAM

本题共1.5分

第11题

在下列关于计算机语言的说法中,正确的有(卜

A.高级语言比汇编语言更高级,是因为它的程序的运行效率更高

B.随着Pascal、C等高级语言的出现,机器语言和汇编语言已经退出了历史

舞台

C.高级语言比汇编语言程序更容易从一种计算机上移植到另一种计算机上

D.C是一种面向对象的高级计算机语言

本题共1.5分

第12题

近20年来,许多计算机专家都大力推崇递归算法,认为它是解决较复杂问题的

强有力的工具。在下列关于递归算法的说法中,正确的是(卜

A.在1977年前后形成标准的计算机高级语言“F0RTRAN77”禁止在程序使用递

归,原因之一是该方法可能会占用更多的内存空间

B.和非递归算法相比,解决同一个问题,递归算法一般运行得更快一些

C.对于较复杂的问题,用递归方式编程一般比非递归方式更难一些

D.对于已经定义好的标准数学函数sin(x),应用程序中的语句

“y=sin(sin(x));"就是一种递归调用

本题共1.5分

第13题

一个无法靠自身的控制终止的循环成为“死循环”,例如,在C语言程序中,语句

while(l)printf("*");就是一^个死循环,运行时它将无休止地打印*号。下面

关于死循环的说法中,只有()是正确的。

A.不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出

现死循环,因而,任何编译系统都不做死循环检查

B.有些编译系统可以检测出死循环

C.死循环属于语法错误,既然编译系统能检查各种语法错误,当然也应该能检

查出死循环

D.死循环与多进程中出现的“死锁”差不多,而死锁是可以检测的,因而,死

循环也可以检测的

本题共1.5分

第14题

在C语言中,表达式23|2八5的值是()

A.18

B.1

C.23

D.32

本题共1.5分

第15题

在C语言中,判断a等于0或b等于0或c等于0的正确的条件表达式是(卜

A.!((a!=0)||(b!=0)||(c!=0))

B.!((a!=0)&&(b!=0)&&(c!=0))

C.!(a==0&&b==0)||(c!=0)

D.(a=0)&&(b=0)&&(c=0)

本题共1.5分

第16题

地面上有标号为A、B、(:的三根柱,在A柱上放有10个直径相同中间有孔的圆

盘,从上到下依次编号为1,2,3.…,将A柱上的部分盘子经过B柱移入C柱,

也可以在B柱上暂存。如果B柱上的操作记录为“进、进、出、进、进、出、出、

进、进、出、进、出、出"。那么,在C柱上,从下到上的编号为(b

A.243657

B.241257

C.243176

D.243675

本题共1.5分

第17题

与十进制数1770对应的八进制数是(卜

A.3350

B.3351

C.3352

D.3540

本题共1.5分

第18题

设A=B=True,C=D=False,一下逻辑运算表达式值为假的有(卜

A.(-nAAB)V(CADVA)

B.—i(((AAB)VC)AD)

C.AA(BVCVD)VD

D.(AA(DVC))AB

本题共1.5分

第19题

(2070)_{16}+(34)_8(2070)

16

+(34)

8

的结果是(卜

A.(8332)_{10}(8332)

10

B.(208A)_{16}(208A)

16

C.(100000000110)_2(100000000110)

2

D.(20212)_8(20212)

8

本题共1.5分

第20题

已知7个节点的二叉树的先根遍历是1245637(数字为节点的编号,以

下同),中根遍历是4265173,则该二叉树的后根遍历是(卜

A.4652731

B.4652137

C.4231547

D.4653172

本题共1.5分

第21题

(子集划分)将n个数(1,2,,n)划分成r个子集。每个数都恰好属于一

个子集,任何两个不同的子集没有共同的数,也没有空集。将不同划分方法的总

数记为S(n,r)。例如5(4,2)=7,这7种不同的划分方法依次为{(1),(234)},

{(2),(134)},{(3),(124)},{(4),(123)},{(12),(34)},{(13),(24)},

{(14),(23)}。当n=6,r=3时,S(6,3)=。(提示:先固定

一个数,对于其余的5个数考虑S(5,3)与S(5,2),再分这两种情况对原固定

的数进行分析。)

本题共5分

第22题

(最短路线)某城市的街道是一个很规整的矩形网络(见下图),有7条南北向

的纵街,5条东西向的横街。现要从西南角的A走到东北角的B,最短的走法共

有多少种?______________

本题共5分

第23题

看程序写结果:

#include<stdio.h>

intmain()

inti,p[5],a,b,c,x,y=20;

for(i=0;i<=4;i++)

scanf("%d”,&p[i]);

a=(p[0]+p[l])+(p[2]+p[3]+p[4])/7;

b=p[0]+P[l]/((P[2]+p[3])/p[4]);

c=p[0]*p[l]/p[2];

x=a+b-p[(p[3]+3)%4];

if(x>10)

y+=(b*100-a)/(p[p[4]%3]*5);

else

y+=20+(b*100-c)/(p[p[4]%3]*5);

printf("%d,%d\n”,x,y);

return(0);

)

{注:本例中,给定的输入数据可以避免分母为0或数组元素下表越界。}输入:

66553

本题共8分

第24题

看程序写结果:

#include<stdio.h>

voidfun(int*a,int*b)

{

int*k;

k=a;a=b;b=k;

)

main()

(

inta=3,b=6,*x=&a,*y=&b

fun(x,y);

printf("%d,%d",a,b);

)

输出:_____________________________________

本题共8分

第25题

看程序写结果:

#include"math.h"

#include"stdio.h"

main()

{

intal[51]={0};

inti,j,t,t2,n=50;

for(i=2;i<=sqrt(n);i++)

if(al[i]==0)

t2=n/i;

for(j=2;j<=t2;j++)

al[i*j]=1;

)

t=0;

for(i=2;i<=n;i++)

if(al[i]==0)

(

printf("%4d",i);t++;

if(t%10==0)

printf("\n");

)

printf("\n");

)

本题共8分

第26题

看程序写结果:

#include"ctype.h"

#include"stdio.h"

voidexpand(charsl[],chars2[])

{

inti,j,a,b,c;

j=0;

for(i=0;(c=sl[i])!='\0';i++)

if(c==1-')

(

a=sl[i-1];b=sl[i+1];

if(isalpha(a)&&isalpha(b)||isdigit(a)&&

isdigit(b))

/*函数isalpha(a)用于判断字符a是否为字母,isdigit(b)用于判断字符b

是否为数字,如果是,返回1,否则返回0*/

(

do

s2[j++]=a++;

while(tolower(a)<tolower(sl[i+1]));

)

/*函数tolower(a)的功能是当字符a是大写字母,改为小写,其余情况不变*/

elses2[j++]=c;

}elses2[j++]=c;

s2[j]='\01;

)

main()

{

charsl[100],s2[300];

printf("inputsi:");

gets(si);

expand(si,s2);

printf("%s\n",s2);

)

输入:wer2345d-h454-82qqq

本题共8分

第27题

完善程序:

(求字符的逆序)下面的程序的功能是输入若干行字符串,每输入一行,就按逆

序输出该行,最后键入-1终止程序。请将程序补充完整。

#include<iostream.h>

#include<string.h>

intmaxline=200,kz;

intreverse(chars[])

(

inti,j,t;

for(i=0,j=strlen(s)-1;i<j;【①],[@])

(

t=s[i];s[i]=s[j];s[j]=t;

)

return(0);

)

voidmain()

charline[100];

cout<<"continue?-1forend."<<endl;

cin>>kz;

while(【③】)

cin>>line;

[®];

cout<<line<<endl;

cout<<"continue?-1forend."<<endl;

cin>>kz;

1.

2.

3.

4.

本题共8分

第28题

完善程序:

(棋盘覆盖问题)在一个2Ak\times2Ak2

k

x2

k

个方格组成的棋盘中恰有一个方格与其它方格不同(图中标记为-1的方格),

称之为特殊方格。现用L型(占3个小方格)纸片覆盖棋盘上除特殊方格的所有

部分,各纸片不得重叠,于是,用到的纸片数恰好是(4八k-l)/3(4

k

-l)/3o在下表给出的一个覆盖方案中,k=2,相同的3各数字构成一个纸片。

下面给出的程序使用分治法设计的,将棋盘一分为四依次处理左上角、右上角、

左下角、右下角,递归进行。请将程序补充完整。

2233

2-113

4115

4455

#include<iostream.h>

#include<iomanip.h>

intboard[65][65],tile;/*tile为纸片编号*/

voidchessboard(inttr,inttc,intdr,intde,intsize)

/*dr,de依次为特殊方格的行、列号*/

(

intt,s;

if(size==1)

⑤;

t=tile++;

s=size/2;

if(⑥)

chessboard(tr,tc,dr,de,s);

else(

board[tr+s-1][tc+s-1]=t;

[®];

)

if(dr<tr+s&&de>=tc+s)

chessboard(tr,tc+s,dr,de,s);

else{

board[tr+s-1][tc+s]=t;

⑧;

)

if(dr>=tr+s&&de<tc+s)

chessboard(tr+s,tc,dr,de,s);

else(

board[tr+s][tc+s-1]=t;

[®];

)

if(dr>=tr+s&&de>=tc+s)

chessboard(tr+s,tc+s,dr,de,s);

else(board[tr+s][tc+s]=t;

网;)

)

voidprtl(intb[][65],intn)

(

inti,j;

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

cout<<setw(3)<<b[i][j];

cout<<endl;

)

)

voidmain()

{

intsize,dr,de;

cout<<"inputsize(4/8/16/64):"<<endl;

cin>>size;

cout<<"inputthepositionofspecialblock(x,y):"<<endl;

cin>>dr>>de;

board[dr][de]=-1;

tile++;

chessboard(1,1,dr,de,size);

prtl(board,size);

}

1.

2.

3.

4.

5.

6.

本题共18分

提高组(120分钟)

第1题

在以下各项中,()不是CPU的组成部分。

A.控制器

B.运算器

C.寄存器

D.主板

E.算术逻辑单元(ALU)

本题共1.5分

第2题

在关系数据库中,存放在数据库中的数据的逻辑结构以()为主。

A.二叉树

B.多叉树

C.哈希表

D.B+树

E.二维表

本题共1.5分

第3题

在下列各项中,只有()不是计算机存储容量的常用单位。

A.Byte

B.KB

C.MB

D.UB

E.TB

本题共1.5分

第4题

ASCII码的含义是(卜

A.二-十进制转换码

B.美国信息交换标准代码

C.数字的二进制编码

D.计算机可处理字符的唯一编码

E.常用字符的二进制编码

本题共1.5分

第5题

在C语言中,表达式23|2八5的值是()

A.23

B.1

C.18

D.32

E.24

本题共1.5分

第6题

在C语言中判断a等于0或b等于0或c等于0的正确的条件表达式是()

A.!((a!=0)||(b!=0)||(c!=0))

B.!((a!=0)&&(b!=0)&&(c!=0))

C.!(a==0&&b==0)||(c!=0)

D.(a=0)&&(b=0)&&(c=0)

E.!((a=0)||(b=0)||(c=0))

本题共1.5分

第7题

地面上有标号为A、B、C的3根细柱,在A柱上放有10个直径相同中间有孔

的圆盘,从上到下依次编号为1,2,3,……,将A柱上的部分盘子经过B柱移

入C柱,也可以在B柱上暂存。如果B柱上的操作记录为:“进,进,出,进,

进,出,出,进,进,出,进,出,出”。那么,在C柱上,从下到上的盘子

的编号为

A.243657

B.241257

C.243176

D.243675

E.214375

本题共1.5分

第8题

与十进制数17.5625对应的8进制数是()o

A.21.5625

B.21.44

C.21.73

D.21.731

E.前4个答案都不对

本题共1.5分

第9题

欧拉图G是指可以构成一个闭回路的图,且图G的每一条边恰好在这个闭回路

上出现一次(即一笔画成卜在以下各个描述中,不一定是欧拉图的是(卜

A.图G中没有度为奇数的顶点

B.包含欧拉环游的图(欧拉环游是指通过图中每边恰好一次的闭路径)

C.包含欧拉闭迹的图(欧拉迹是指通过图中每边恰好一次的路径)

D.存在一条回路,通过每个顶点恰好一次

E.本身为闭迹的图

本题共1.5分

第10题

一个无法靠自身的控制终止的循环称为“死循环”,例如,在C语言程序中,语句

while(l)printf就是一个死循环,运行时它将无休止地打印*号。下面

关于死循环的说法中,只有()是正确的。

A.不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出

现死循环,因而,任何编译系统都不做死循环检验

B.有些编译系统可以检测出死循环

C.死循环属于语法错误,既然编译系统能检查各种语法错误,当然也应该能检

查出死循环

D.死循环与多进程中出现的“死锁”差不多,而死锁是可以检测的,因而,死

循环也是可以检测的

E.对于死循环,只能等到发生时做现场处理,没有什么更积极的手段

本题共1.5分

第11题11-2。题为多选题,少选得一半分,选错不得分

设A=B=true,C=D=false,以下逻辑运算表达式值为真的有(卜

A.(rAAB)V(CADVA)

B.r(((AAB)VC)AD)

C.AA(BVCVD)VD

D.(AA(DVC))AB

本题共1.5分

第12题

命题“P-Q”可读做P蕴涵Q,其中P、Q是两个独立的命题。只有当命题P成立

而命题Q不成立时,命题“PR”的值为false其他情况均为true。与命题"P-Q”

等价的逻辑关系式是(卜

A.rPVQ

B.PAQ

C.r(PVQ)

D.r(rQAP)

本题共1.5分

第13题

(2070)_{16}+(34)_8(2070)

16

+(34)

8

的结果是('

A.(8332)_{10}(8332)

10

B.(208C)_{16}(208C)

16

C.(100000000110)_2(100000000110)

2

D.(20214)_8(20214)

8

本题共1.5分

第14题

已知7个结点的二叉树的先根遍历是1245637(数字为结点的编号,以

下同),后根遍历是4652731,则该二叉树的可能的中根遍历是()

A.4265173

B.4256137

C.4231547

D.4256173

本题共1.5分

第15题

冗余数据是指可以由其他数据导出的数据,例如,数据库中已存放了学生的数学、

语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数

据。冗余数据往往会造成数据的不一致,例如,上面4个数据如果都是输入的,

由于操作错误使总分不等于三科成绩之和,就会产生矛盾。下面关于冗余数据

的说法中,正确的是(卜

A.应该在数据库中消除一切冗余数据

B.与用高级语言编写的数据处理系统相比用关系数据库编写的系统更容易消

除冗余数据

C.为了提高查询效率,在数据库中可以适当保留一些冗余数据,但更新时要做

相容性检验

D.做相容性检验会降低效率,可以不理睬数据库中的冗余数据

本题共1.5分

第16题

在下列各软件中,属于NOIP竞赛(复赛)推荐使用的语言环境有(卜

A.gcc

B.g++

C.TurboC

D.freepascal

本题共1.5分

第17题

以下断电之后仍能保存数据的有(卜

A.硬盘

B.ROM

C.显存

D.RAM

本题共1.5分

第18题

在下列关于计算机语言的说法中,正确的有(卜

A.高级语言比汇编语言更高级,是因为它的程序的运行效率更高

B.随着Pascal、C等高级语言的出现,机器语言和汇编语言已经退出了历史

舞台

C.高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上

D.C是一种面向过程的高级计算机语言

本题共1.5分

第19题

在下列关于算法复杂性的说法中,正确的有(卜

A.算法的时间复杂度,是指它在某台计算机上具体实现时的运行时间

B,算法的时间复杂度,是指对于该算法的一种或几种主要的运算,运算的次数

与问题的规模之间的函数关系

C.一个问题如果是NPC类的,就意味着在解决该问题时,不存在一个具有多

项式时间复杂度的算法.但这一点还没有得到理论上的证实,也没有被否定

D.一个问题如果是NP类的,与C有相同的结论

本题共1.5分

第20题

近20年来,许多计算机专家都大力推崇递归算法,认为它是解决较复杂问题的

强有力的工具。在下列关于递归算法的说法中,正确的是(卜

A.在1977年前后形成标准的计算机高级语言“F0RTRAN77”禁止在程序使用递

归,原因之一是该方法可能会占用更多的内存空间

B.和非递归算法相比,解决同一个问题,递归算法一般运行得更快一些

C.对于较复杂的问题,用递归方式编程往往比非递归方式更容易一些

D.对于已经定义好的标准数学函数sin(x),应用程序中的语句

“y=sin(sin(x));"就是一种递归调用

本题共1.5分

第21题

给定n个有标号的球,标号依次为1,2,,n。将这n个球放入r个相同的

盒子里,不允许有空盒,其不同放置方法的总数记为S(n,r)。例如,S(4,2)=7,

这7种不同的放置方法依次为{(1),(234)},{(2),(134)},{(3),(124)},

{(4),(123)},{(12),(34)},{(13),(24)},{(14),(23)}。当e7,「=4时,

S(7,4)=o

本题共5分

第22题

N个人在操场里围成一圈,将这N个人按顺时针方向从1到N编号,然后,

从第一个人起,每隔一个人让下一个人离开操场,显然,第一轮过后,具有偶数

编号的人都离开了操场。依次做下去,直到操场只剩下一个人,记这个人的编

号为J(N),例如,J(5)=3,11(10)=5,等等。则J(400)=o

(提示:对N=2Am+rN=2

m

+r进行分析,其中0<r<2Am0<r<2

m

本题共5分

第23题

#include<stdio.h>

intmain()

{

inti,p[5],q[5],x,y=20;

for(i=0;i<=4;i++)

scanf("%d”,&p[i]);

q[0]=(P[0]+P[l])+(P[2]+p[3]+p[4])/7;

q[l]=P[0]+P[l]/((P[2]+p[3])/p[4]);

q[2]=p[0]*p[l]/p[2];

q[3]=q[0]*q[l];

q[4]=q[l]+q[2]+q[3];

x=(q[0]+q[4]+2)-p[(q[3]+3)%4];

if(x>10)

y+=(q[i]*100-q[3])/(p[p[4]%3]*5);

else

y+=20+(q[2]*100-q[3])/(p[p[4]%3]*5);

printf("%d,%d\n",x,y);

return(0);

)

/*注:本例中,给定的输入数据可以避免分母为0或数组元素下标越界。*/

输入:66553

输出:__________________

本题共8分

第24题

#include<stdio.h>

voidfun(int*a,int*b)

{

int*k;

k=a;a=b;b=k;

)

main()

{

inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

printf("No.l:%d,%d",a,b);

fun(&a,&b);

printf("No.2:%d,%d\n',a,b);

)

输出:_______________________

本题共8分

第25题

看程序写结果

#include"math.h"

#include"stdio.h"

main()

{

intal[51]={0};

inti,j,t,t2,n=50;

for(i=2;i<=sqrt(n);i++)

if(al[i]==0)

(

t2=n/i;

for(j=2;j<=t2;j++)

al[i*j]=1;

)

t=0;

for(i=2;i<=n;i++)

if(al[i]==0)

{

printf("Md",i);t++;

if(t%10==0)

printf("\n");

)

printf("\n");

)

输出:___________

本题共8分

第26题

看程序写结果

#include"stdio.h"

charch[]={'q','A','S','O','R','T','E','X','A','M',

P,'「,,E'};

intn=12;

voidshift(intk,intn)

{

charv;

intj;

v=ch[k];j=k+k;

while(j<=n)

(

if((j<n)&&(ch[j]<ch[j+1]))

j++;

if(v<ch[j])

(

ch[j/2]=ch[j];j*=2;

}else

return;

ch[j/2]=v;

)

)

voidhpsrt(void)

{

intk;

chartmp;

for(k=n/2;k>0;k--)

shift(k,n);/*建堆*/

printf("No.l:");

for(k=1;k<=n;k++)

putchar(ch[k]);

putchar('\n');

for(k=n;k>0;k--)

{

tmp=ch[1];ch[l]=ch[k];ch[k]=tmp;

shift(1,k-1);

)

)

main()

{

intk;

hpsrt();

printf("No.2:");

for(k=1;k<=n;k++)

putchar(ch[k]);

putchar(1\n');

}

输出:_________

本题共2分

第27题

(格雷码,GrayCode)格雷码是对十进制数的一种二进制编码。编码顺序与相

应的十进制数的大小不一致。其特点是:对于两个相邻的十进制数,对应的两个

格雷码只有一个二进制位不同。另外,最大数与最小数之间也仅有一个二进制位

不同,以4位二进制数为例,编码如下:

十进制数格雷码十进制数格雷码

0000081100

1000191101

20011101111

30010111110

40110121010

50111131011

60101141001

70100151000

如果把每个二进制的位看作一个开关,则将一个数变为相邻的另一个数,只须改

动一个开关。因此,格雷码广泛用于信号处理、数-模转换等领域。

下面程序的任务是:由键盘输入二进制数的位数n(n<16),再输入一个十进制

数m(0Sm<2n),然后输出对应于m的格雷码(共n位,用数组gr□存放卜

为了将程序补充完整,你必须认真分析上表的规律,特别是对格雷码固定的某一

位,从哪个十进制数起,由0变为1,或由1变为0。

#include<stdio.h>

main()

{

intbound=1,m,n,i,j,b,p,gr[15];

printf("inputn,m\n");

scanf("%d%d”,&n,&m);

for(i=1;i<=n;i++)

bound=①;

if(m<0||m>=bound)

{

printf("Dataerror!\n");

②;

)

b=1;

for(i=1;i<=n;i++)

(

p=0;b=b*2;

for(③;j<=m;j++)

if(®)

P=1-P;

gr[i]=P;

)

for(i=n;⑤)

nH/*在”中出现的是数字工,不是字

printf(%ld?gr[i]);%ld”

母1*/

printf('An");

)

1.

2.

3.

4.

5.

本题共10分

第28题

(连续邮资问题)某国发行了n种不同面值的邮票,并规定每封信最多允许贴m

张邮票,在这些约束下,为了能贴出{1,2,3,...,maxvalue}连续整数集合的

所有邮资,并使maxvalue的值最大,应该如何设计各邮票的面值?例如,当

n=5、m=4时,面值设计为{1,3,11,15,32),可使maxvalue达到最大值

70(或者说,用这些面值的1至4张邮票可以表示不超过70的所有邮资,但

无法表示邮资71。而用其他面值的1至4张邮票如果可以表示不超过k的所

有邮资,必有k<701

下面是用递归回溯求解连续邮资问题的程序。数组x[l:n]表示n种不同的邮票

面值,并约定各元素按下标是严格递增的。数组bestx[l:n]存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论