• 当当网笔试的两道编程题


    ---恢复内容开始---

    【一】

    一共有n个人,有m条跳绳,我们如何分配组以及组员数,使得每组的人数相差最少,例如输入9个人,8条跳绳,最佳分配是5,4;


    刚开始并没有理解题的意思,情急之下,百度为上。看到一道和这道题非常类似的题目。

    输入两个数,人数为n,跳绳数为m。

    首先,加入人数小于m分成1组就好了,如果大于m,分组数groups=(n+m-1)/m.其实就是除法然后进1法,例如当我们有25个人,8条跳绳(25÷8等于3余1,进一法为4)的时候,应该分组为:7、6、6、6

    如果groups>m的话,直接令groups=m;

    int num = n /g;      // 每组人数(g-1)个num       

     int r = n%g;        // 分组 余 数 r      

    for(int i=0;i<r;i++)

    {    // 余数均 分         

    System.out.println(num+1);      

    }       

    for(int i=0;i<g-r; i++){  // 输出剩下的            

    System.out.println(num); }    

     

    【二】

    左手右手轮流搭积木,哪只手开始必须那只手结束,问有多少搭积木的方案?例如5个积木,有4个搭积木的方案,11111,212,122,221

    首先,我们可以看出来,只有奇数步数的方案走得通,因为要哪只手开始哪只手结束。

     1 #include <string>
     2 #include <iostream>
     3 
     4 using namespace std;
     5 
     6 
     7 int test2(int n, int step) {
     8     if (n == 0 && (step & 1)) return 0;
     9     if (n == 0 && !(step & 1)) return 1;
    10     if (n == 1 && (step & 1)) return 1;
    11     if (n == 1 && !(step & 1)) return 0;
    12     return test2(n - 1, step + 1) + test2(n - 2, step + 1);
    13 
    14 }
    15 
    16 void test1() {
    17     int n, res;
    18     cin >> n;
    19     res = test2(n, 0);
    20     cout << res;
    21 }
    22 
    23 
    24 int main()
    25 {
    26     test1();
    27     return 0;
    28 }

     

  • 相关阅读:
    Python环境的导入导出
    Jenkins+Ant+Jmeter搭建轻量级接口自动化(转载)
    VMware桥接模式连接局域网和互联网
    安装KVM
    [Beyond Compare] 排除/忽略 .svn 文件夹
    Git 如何放弃所有本地修改
    Python2 和 Python3 共存于 Centos7
    kubernetes 之部署metrics-server
    在CentOS 7.6 以 kubeadm 安装 Kubernetes 1.15 最佳实践
    华为云 Kubernetes 管理员实训 五 课后作业
  • 原文地址:https://www.cnblogs.com/LUO77/p/4968621.html
Copyright © 2020-2023  润新知