2011蓝桥杯预赛若干题

简介: 1.1.    代码填空(满分3分) 假设a,b,c是3个互不相等的整数。下列代码取出它们中居中的数值,记录在m中。其中的swap()函数可以交换两个变量的值。请完善代码。     if(a>b) swap(&a, &b);     if(b>c) swap(&b, &c);     if(a>b) swap(&a, &b);     int m = b; 因为经过第二次交换后b的值不一定大于a了   1.2.    代码填空(满分5分) 计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。

1.1.    代码填空(满分3分)

假设a,b,c是3个互不相等的整数。下列代码取出它们中居中的数值,记录在m中。其中的swap()函数可以交换两个变量的值。请完善代码。

    if(a>b) swap(&a, &b);

    if(b>c) swap(&b, &c);

    if(a>b) swap(&a, &b);

    int m = b;

因为经过第二次交换后b的值不一定大于a了

 

1.2.    代码填空(满分5分)

计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。请完善它。

int f(int m, int n)

{

    if(m==0 || n==0) return 1;

    return f(n-1,m) + f(n,m-1);

}

 

#include <iostream>

#include <cstring>

#include <cstdlib>

#include <cmath>

using namespace std;

 

/*

递推求解

(m+n)!/(m!n!) = (m+n)(m+n-1)(m+n-2)!/(m-1)!/(n-1)!

*/

int f(int m, int n)

{

    /*

    需要把 f(m-1,n-1)提到前面相乘,不能 ((m+n)*(m+n-1))/(m*n)*f(m-1,n-1),

    因为可能前面的除不尽,或者把mn改为double,或者按下面的这样

    */

    if(m==0 || n==0) return 1;

    return ((m+n)*(m+n-1)*f(m-1,n-1))/(m*n);

}

 

int main()

{

    int i,j,k;

   

    cout<<f(2,7)<<endl;

    while(1);

    return 0;

}

1.3.    代码填空(满分6分)

此段代码的意图是把一个缓冲区中的整数重新排列,使得所有负数都在正数的左边。请分析其工作流程,补充缺失的代码。

void reorder(int *pData, int len)

{

      if(pData == NULL || len == 0) return;

      int *pBegin = pData;

      int *pEnd =pData+len-1;

      while(pBegin < pEnd)

      {

            if(*pBegin<0)

            {

                  pBegin ++;

                  if(pEnd<=pBegin) break;

            }

            if(*pEnd>=0)

            {

                  pEnd --;

                  if(pEnd<=pBegin) break;

            }

 

            int temp = *pBegin;

            *pBegin = *pEnd;

            *pEnd = temp;

      }

}

 

int main(int argc, char **argv)

{

    int a[] = {1,2,3,-5,-4,5,9,-8,-1};

    reorder(a, 9);

 

    for(int i=0; i<9; i++) printf("%d ", a[i]);

    printf("\n");

    return 0;  

}

 

1.4.    代码填空(满分9分)

给定一个字符串,其含有的字符各不相同。程序输出该字符串的所有排列(全排列)情形。例如:给定字符串“xyz”,则程序输出:

xyz

xzy

yxz

yzx

zyx

zxy

试完善程序中空缺的部分。

void f(char *str, int len, int n)

{  

    int i;  

    char tmp;  

    char *p = (char *)malloc(len+1);  

    if(n==len-1){  

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

    }else{  

        for(i=n;i<len;i++){  

            strcpy(p,str);  

 

            tmp = *(str+n);  

            *(str+n) = *(str+i);  

            *(str+i) = tmp;  

 

            f(str,len,n+1);  

            strcpy(str,p);  

        }  

    }  

    free(p);  

}  

 

int main(int argc, char **argv)

{  

    char str[] = "xyz";  

    f(str,3,0);  

    printf("\n");  

    return 0;  

}

 

2011 模拟 c语言 高职

1.5. 程序设计(满分 20 分)

任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。

比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。

 

请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照:

[82962, 75933, 63954, 61974]

其中数字的先后顺序可以不考虑。

 

解:这道题很不理解题意

 

目录
相关文章
|
6月前
|
算法 Android开发 C++
LeetCode 周赛上分之旅 #49 再探内向基环树
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
56 1
|
8月前
|
算法 Android开发 Kotlin
LeetCode 周赛上分之旅 #42 当 LeetCode 考树上倍增,出题的趋势在变化吗
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
89 0
LeetCode 周赛上分之旅 #42 当 LeetCode 考树上倍增,出题的趋势在变化吗
|
9月前
|
算法 JavaScript Android开发
LeetCode 周赛上分之旅 #33 摩尔投票派上用场
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
56 0
|
10月前
|
算法 测试技术
蓝桥杯2022年第十三届决赛真题-卡牌——二分法
蓝桥杯2022年第十三届决赛真题-卡牌——二分法
84 0
|
10月前
|
C语言 C++
PTA团体程序设计天梯赛-练习集: L1-050 倒数第N个字符串 ( 15分 )
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。 输入格式: 输入在一行中给出两个正整数 L(2 ≤ L ≤ 6)和 N(≤105)。 输出格式: 在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。 输入样例:
122 0
|
10月前
|
测试技术
蓝桥杯2021年第十二届省赛真题-砝码称重(动态规划)
蓝桥杯2021年第十二届省赛真题-砝码称重(动态规划)
|
算法
算法竞赛题解:校门外的树
NOIP2005 普及组:校门外的树
200 0
|
项目管理
第321场周赛赛后总结(前三题)+记录一道有意思的题目
前言 今天早上可能是浏览器出了点故障,一直没法打开力扣官网页面(但别的页面没问题)(别人都能进说明不是官网服务器的问题咯),错过了周赛(不过就算按时参加估计也是陪跑,就先这么安慰自己了),下午发现能进去了,赶紧找个时间补了一下题。
97 0
L1-079 天梯赛的善良 (20 分)
L1-079 天梯赛的善良 (20 分)
191 0
7-7 天梯赛的善良 (20 分)
7-7 天梯赛的善良 (20 分)
234 0