zoukankan      html  css  js  c++  java
  • 蓝桥复习2

    项目一:九数组分数
    1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?
    下面的程序实现了该功能,请填写划线部分缺失的代码。
     1 #include <stdio.h>
     2 void test(int x[])
     3 {
     4  int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
     5  int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
     6  
     7  if(a*3==b) printf("%d / %d
    ", a, b);
     8 }
     9 void f(int x[], int k)
    10 {
    11  int i,t;
    12  if(k>=9){
    13   test(x);
    14   return;
    15  }
    16  
    17  for(i=k; i<9; i++){
    18   {t=x[k]; x[k]=x[i]; x[i]=t;}
    19   f(x,k+1);
    20   _____________________________________________ // 填空处
    21  }
    22 }
    23  
    24 int main()
    25 {
    26  int x[] = {1,2,3,4,5,6,7,8,9};
    27  f(x,0); 
    28  return 0;
    29 }

    结果:

     1 #include <stdio.h>
     2 
     3 void test(int x[])
     4 {
     5     int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
     6     int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
     7     
     8     if(a*3==b) printf("%d / %d
    ", a, b);
     9 }
    10 
    11 void f(int x[], int k)
    12 {
    13     int i,t;
    14     if(k>=9){
    15         test(x);
    16         return;
    17     }
    18     
    19     for(i=k; i<9; i++){
    20         {t=x[k]; x[k]=x[i]; x[i]=t;}
    21         f(x,k+1);
    22         {t=x[k];x[k]=x[i];x[i]=t;}// 填空处
    23     }
    24 }
    25     
    26 int main()
    27 {
    28     int x[] = {1,2,3,4,5,6,7,8,9};
    29     f(x,0);    
    30     return 0;
    31 }
    {t=x[k];x[k]=x[i];x[i]=t;}
    项目二:加法变乘法
    我们都知道:1+2+3+ ... + 49 = 1225
    现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
    比如:
    1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015
    就是符合要求的答案。
    请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
     1 #include<stdio.h>
     2 int main()
     3 {
     4     int sum=1225;
     5     int tmp1,tmp2; 
     6     for(int i=1;i<47;i++)
     7     {
     8         tmp1=sum-(i+i+1)+(i*(i+1));
     9         for(int j=i+2;j<49;j++)
    10         {
    11             tmp2=tmp1-(j+j+1)+(j*(j+1));
    12             if(tmp2==2015)
    13             printf("%d
    ",i);
    14         } 
    15     }
    16     return 0;
    17 }

    16

    项目三:牌型种数

    小明被劫持到X赌城,被迫与其他3人玩牌。
    一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
    这时,小明脑子里突然冒出一个问题:
    如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
    请填写该整数,不要填写任何多余的内容或说明文字。
    dp[i][j]=∑k=j−4jdp[i−1][k]
     1 #include <stdio.h>
     2 typedef long long LL;
     3 
     4 LL dp[14][14]; // dp[i][j]: 当前到第i张牌,总共有j张牌时的解的个数
     5 
     6 int main() {
     7     dp[1][0] = dp[1][1] = dp[1][2] = dp[1][3] = dp[1][4] = 1;
     8 
     9     for (int i = 2; i <= 13; i++) {
    10         for (int k = 0; k <= 13; k++) {
    11             if (k - 4 >= 0) dp[i][k] += dp[i-1][k-4];
    12             if (k - 3 >= 0) dp[i][k] += dp[i-1][k-3];
    13             if (k - 2 >= 0) dp[i][k] += dp[i-1][k-2];
    14             if (k - 1 >= 0) dp[i][k] += dp[i-1][k-1];
    15             dp[i][k] += dp[i-1][k];
    16         }
    17     }
    18 
    19     printf("%d",dp[13][13]);
    20     return 0;
    21 }

    35981800

    项目四:移动距离

    X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3...
    当排满一行时,从下一行相邻的楼往反方向排号。
    比如:当小区排号宽度为6时,开始情形如下:
    1  2  3  4  5  6
    12 11 10 9  8  7
    13 14 15 .....
    我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)
    输入为3个整数w m n,空格分开,都在1到10000范围内
    w为排号宽度,m,n为待计算的楼号。
    要求输出一个整数,表示m n 两楼间最短移动距离。
    例如:
    用户输入:
    6 8 2
    则,程序应该输出:
    4
    再例如:
    用户输入:
    4 7 20
    则,程序应该输出:
    5
    资源约定:
    峰值内存消耗 < 256M
    CPU消耗  < 1000ms

    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    注意: main函数需要返回0
    注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
    注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
    提交时,注意选择所期望的编译器类型。
     1 #include <iostream>
     2 
     3 #include <math.h>
     4 
     5 using namespace std;
     6 
     7 int main()
     8 
     9 {
    10 
    11     int w, m, n;
    12 
    13     int i, j, k = 1;
    14 
    15     int mi, mj, ni, nj;
    16 
    17     cin >> w >> m >> n;
    18 
    19     int arr[1001][w];
    20 
    21     for (i = 0; i<1001; i++)
    22 
    23     {
    24 
    25         if ((i + 1) % 2 != 0)
    26 
    27         {
    28 
    29             for (j = 0; j<w; j++)
    30 
    31             {
    32 
    33                 arr[i][j] = k + j;
    34 
    35             }
    36 
    37             k = arr[i][j - 1];
    38 
    39         }
    40 
    41         else{
    42 
    43             int f = 1;
    44 
    45             for (j = w - 1; j >= 0; j--, f++)
    46 
    47             {
    48 
    49                 arr[i][j] = k + f;
    50 
    51             }
    52 
    53             k = arr[i][0] + 1;
    54 
    55         }
    56 
    57     }
    58 
    59     for (i = 0; i<1001; i++)
    60 
    61     {
    62 
    63         for (j = 0; j<w; j++)
    64 
    65         {
    66 
    67             if (arr[i][j] == n)
    68 
    69             {
    70 
    71                 ni = i;
    72 
    73                 nj = j;
    74 
    75             }
    76 
    77             if (arr[i][j] == m)
    78 
    79             {
    80 
    81                 mi = i;
    82 
    83                 mj = j;
    84 
    85             }
    86 
    87         }
    88 
    89     }
    90 
    91     int a = abs(mi - ni);
    92 
    93     int b = abs(mj - nj);
    94 
    95     printf("%d
    ",a+b);
    96 
    97     return 0;
    98 
    99 }

     项目五:煤球数目

    有一堆煤球,堆成三角棱锥形。具体:
    第一层放1个,
    第二层3个(排列成三角形),
    第三层6个(排列成三角形),
    第四层10个(排列成三角形),
    ....
    如果一共有100层,共有多少个煤球?
     1 #include<stdio.h>
     2 int main()
     3 {
     4     int a[101]={0};
     5     for(int i=1;i<101;i++)
     6     {
     7         a[i]=a[i-1]+i;
     8     }
     9     int ans=0;
    10     for(int i=1;i<101;i++)
    11     {
    12         ans+=a[i];
    13     }
    14     printf("%d
    ",ans);
    15     return 0;
    16     
    17 }
  • 相关阅读:
    开源项目
    引入CSS的三种方式
    Android打开数据库读取数据
    每日日报2020.10.16 1905
    课程2 1905
    每日日报2020.10.13 1905
    每日日报2020.10.15 1905
    每日日报2020.10.8 1905
    每日日报2020.10.9 1905
    每日日报2020.10.12 1905
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/10585222.html
Copyright © 2011-2022 走看看