蓝桥杯练习题库基础练习之VIP题

上传人:工**** 文档编号:497933649 上传时间:2024-01-11 格式:DOC 页数:60 大小:498.50KB
返回 下载 相关 举报
蓝桥杯练习题库基础练习之VIP题_第1页
第1页 / 共60页
蓝桥杯练习题库基础练习之VIP题_第2页
第2页 / 共60页
蓝桥杯练习题库基础练习之VIP题_第3页
第3页 / 共60页
蓝桥杯练习题库基础练习之VIP题_第4页
第4页 / 共60页
蓝桥杯练习题库基础练习之VIP题_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《蓝桥杯练习题库基础练习之VIP题》由会员分享,可在线阅读,更多相关《蓝桥杯练习题库基础练习之VIP题(60页珍藏版)》请在金锄头文库上搜索。

1、蓝桥杯练习题库-基础练习之VIP题作者:日期:基础练习阶乘计算时间限制:1 . 0s内存限制:5 1 2.0MB查看参考代码锦囊1数组。锦囊2使用数组来保存一个整数,按手算的方法处理。问题描述输入一个正整数n,输岀n!的值。其中n! =1*2 * *n。算法描述n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示 一个大整数a,A 0 表示a的个位,A1表示a的十位,依次类推。将a乘以一个整数k变为将数组 A的每一个元素都乘以k,请注意处理相应的进位。? 首先将 a设为1,然后乘2,乘3,当乘到n时,即得到了 n !的值。输入格式输入包含一个正整数 n,n

2、 v =1 0 00。输出格式输岀n!的准确值。样例输入1 0样例输出本题的C参考代码如下:#in c lude v std i o.h#def ine N 10000int m a i n ()?i nt aN = 1;int k=0,l = 1,n;?i nt i ,j;scan f( %d,&n);?fo r(i=1 ; iv =n;i+ +)?or( j =0;j v l;j+)? ? aj: =aj: *i+ k ;k= aj/10 0 00;?j=a j% 10000;?f(k)?aj= k;?+;?k =0 ;?p ri nt f (% d, a l- 1);?fo r(i=l-

3、2 ; i = 0 ; i )初 i nt f( %04d,a i ); 卬rin tf (n);ret urn 0 ;基础练习 高精度加法时间限制:1 . 0s 内存限制:512 .0MB查看参考代码问题描述输入两个整数a和b,输岀这两个整数的和。a和 b都不超过100位。算法描述由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。定义一个数组A, A0用于存储a的个位,A1用于存储a的十位,依此类推。同样可以用一个数 组B来存储b。? 计算c = a + b的时候,首先将A0与B : 0相加,如果有进位产生,则把进位(即和的十位数)存入r,把和

4、的个位数存入 C0,即C :0等于(A0+B 0 )% 10。然后计算 A1与B : 1相加,这时还应将低位进上来的值 r也加起来,即C1应该是A1、B1 和r三个数 的和如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C1中。依此类推,即可求岀C的所有位。最后将C输出即可。输入格式输入包括两行,第一行为一个非负整数 a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。输出格式输出一行,表示a + b的值。样例输入2 8 9 0 2?0 122样例输出2 1 12 3 3454668012# include#inc lu de#i n cludevoi d f

5、(c h ar a ,char b 口 )int w=200, i ,j,la , lb;la=str l en(a); l b=s t rle n (b);?3h a r c20 0 ;?or (i =la ; i w;i+ ) ai=4 8 ;?or (i =lb;iw ; i+) b i =48;aw-1 =0;bw- 1 =0;? o r(i=0; i la;i+)ci=ai ;?or( i =0;i w - 1 -1 a;i+)ai =48 ; j = 0 ;?f or( i =w-1-la;iw-1;i+)a i =cj;j+ + ;f or(i=0 ; i l b ; i +)c

6、i=b i ; ?or(i=0; i w- 1 -lb; i + + ) b i=4 8 ; j =0;?or (i = w -1-lb;i =0;i)? j= ai +b i -96;if( j 9) ai-1 = ai - 1 +j/10; ci=j%1 0 + 48;cw-1=0;? or( i=0;iw;i+)if(c i!= 0z )break;for(;iw-1;i+) p ri nt f( % c,ci); p rin tf(n) in t ma i n()char a 2 00,b200 ; g ets(a); g et s (b);f (a,b);r e tu r n 0;基

7、础练习时间限制:1Hu f f um an 树.0s内存限制:512.0MB查看参考代码锦囊1贪心算法。锦囊2按题目要求处理即可。问题描述Hu ff ma n树在编码中有着广泛的应用。在这里,我们只关心Huf f ma n树的构造过程。?给岀一列数p J= p o, p i,,p n-1,用这列数构造Huffma n树的过程如下:1 ?.找到p订中最小的两个数,设为P和Pb,将p a和p b从 p. 中删除掉,然后将它们的和加入到 p订中。这个 过程的费用记为pa + pbo2. 重复步骤1,直到pi中只剩下一个数。? 在上面的操作过程中,把所有的费用相加 ,就得到 了构造H uf f ma

8、n树的总费用。?本题任务:对于给定的一个数列,现在请你求岀用该数列构造 Huf fman树的总费用。? 例如,对于数列p =5,3, 8, 2,9 ,Hu f fman树的构造过程如下:1.找到 5,3 , 8,2, 92中最小的两个数,分别是2和3,从p中删除它们并将和5加入,得到 5 ,8,9, 5,费用为5 o2 .找到 5, 8 , 9,5中最小的两个数,分别是5和5,从p中删除它们并将和1 0加入,得到8,9, 10 费用为10o3. 找到8,9, 102中最小的两个数,分别是 8和9,从 p. 2中删除它们并将和17加入,得到 1 0,1 7 ,费用为17o4.找到1 0, 17中

9、最小的两个数,分别是1 0和17,从pi中删除它们并将和27加入,得到27, 费用为27o5.现在,数列中只剩下一个数 2 7,构造过程结束,总费用为5 + 1 0 + 17+27= 59输入格式输入的第一行包含一个正整数 n(n = 100)o ? 接下来是n个正整数,表示p, p 1,p “ , 每个数不超过1000o 输出格式输岀用这些数构造Huffman树的总费用。样例输入5?5 3 8 2 9样例输出59#incl u de typ ed ef struc tint a 100;?nt le n ; h u f ;int s um=0 ;int de l(hu f 玄 in,int

10、t ) ? n t i,j ;f or(i=0; i l e n & in- a i!=t; i +) ?fo r(;i v in- le n-1;i+ )?in- a i = i n a i+ 1 ;?i n- l en-;ret u r n 1;in t add(h u f* in,i n t t)in-a in-le n = t;i n-len + +; int fi n d_t w o_m in s(huf * i n ) ?i nt i, j ,t;? n t min a ,minb;?o r(i =0; i len-1;i+ )? f o r(j= i + 1;j l en; j

11、+ +) ?i f (i n -ai in-aj)? ?t=in-ai;? n - a i =in- a j ;?i?i a j = t;m ina=in a 0;m i nb=in-a 1 ;?d el (in , mina);del( in ,mi nb);ad d (in,m i na+m inb); ret u rn m i na+ m in b ; int ma i n()huf in;? n t i ,j, n;s can f (% d ,&n);?i n. l en=n;f or (i =0;in;i + +) ?s canf(%d,&i n. a i ) ?wh i l e(1

12、)i f(in . le n=2 )sum=su m+in. a 0+in. a 1;?br e ak;sum+=fi n d_ t wo_mins( & i n)p r int f (%d , sum);re turn 0; # i n cludei o stream#inc lu d e us i n g namespace std ;/构造从小到大的优priori t y_q u eue,gre a terv int pq ;先队列i nt mai n ()int n;cin n;w hi l e (! p q.empty ()pq.pop();i nt x, s;fo r (in t

13、i = 0 ; i x;pq.push (x);in t sum = 0 ;while (pq . s i ze() 1) s = pq.t op ();pq. pop ();s + = pq . t op();p q.pop();su m + = s;pq .push(s);cout sum en dl;基础练习2n皇后问题时间限制:1.0s内存限制:51 2 .0MB查看参考代码搜索算法。锦囊2先搜索n皇后的解,在拼凑成2 n皇后的解。问题描述给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一 行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。输入格式输入的第一行为一个整数 n,表示棋盘的大小。? 接下来n行,每行n个0或1的整数,如果一 个整数为1,表示对应的位置可以放皇后,如果一个整

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号