zoukankan      html  css  js  c++  java
  • 寻找水王及其扩展问题

    水王问题(面试题):

    解法一:排序后中间的id即为水王

    解法二:自己没有想出来就请教度娘有两种理解(殊途同归而已)本人喜欢第二种

      1.每次删除两个不同的id剩余id中水王肯定占剩余id的1/2强调字眼“不同”,所以删下去吧

      2.不同记为是一个挑战相同记为一个支持,只有水王“牛”他能迎接所有挑战(支持>挑战)活到最后。

    代码:

     1 //水王
     2 #include<iostream>
     3 using namespace std;
     4 int main()
     5 {
     6     int a = 0;
     7     int b = 0; 
     8     int i;
     9     int arrays[10];
    10     for (i = 0; i < 10; i++)
    11     {
    12         cin >> arrays[i];
    13     }
    14 
    15     for (i = 0; i < 10; i++)
    16     {
    17         if (a == 0 || b == 0)
    18         {
    19             a = arrays[i];
    20             b++;
    21         }
    22         else if (arrays[i] == a)
    23             b++;
    24         else
    25             b--;
    26     }
    27     cout << a;
    28 }

    截图:

    水王扩展:有3个人的id超过整体的1/4找这3个人。

    解法:借用上面解法一的思考我们每回合删4个不同id,剩下id中3个准水王还是超过1/4的可以反过来想怎么能使水王不超过1/4,只有删除相同的水王,所以验证了前面。想了一会儿得出的。

    代码:

     1 #include <iostream>   //水王扩展问题
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     int idpoint[3];         //存放3水王id
     7     int nTimes[3];        //存放记录每个水王的重复的次数
     8     int i;
     9     int id[20] = {1,1,1,1,2,2,2,2,3,3,3,3,1,2,3,5};
    10     //for (i = 0; i < 20; i++)
    11     //{
    12     //    cin >> id[i];
    13     //}
    14     idpoint[0] = id[0];  //可以赋值为无意义的id
    15     idpoint[1] = id[1];
    16     idpoint[2] = id[2];
    17     nTimes[0] = nTimes[1] = nTimes[2] = 0;
    18     for (i = 3; i < 16; i++)
    19     {
    20         if (idpoint[0] == id[i])
    21             nTimes[0]++;
    22         else if (idpoint[1] == id[i])
    23             nTimes[1]++;
    24         else if (idpoint[2] == id[i])
    25             nTimes[2]++;
    26         else if (nTimes[0] == 0)
    27         {
    28             idpoint[0] = id[i];
    29             nTimes[0]++;
    30         }
    31         else if (nTimes[1] == 0)
    32         {
    33             idpoint[1] = id[i];
    34             nTimes[1]++;
    35         }
    36         else if (nTimes[2] == 0)
    37         {
    38             idpoint[2] = id[i];
    39             nTimes[2]++;
    40         }
    41         else
    42         {
    43             nTimes[0]--;
    44             nTimes[1]--;
    45             nTimes[2]--;
    46         }
    47     }
    48     cout << idpoint[0] << "   " << idpoint[1] << "   " << idpoint[2] << endl;
    49     return 0;
    50 }

  • 相关阅读:
    HTTP 错误 403.14
    HTTP 错误 404.3
    HTTP 500
    [转]ESCAPE()、ENCODEURI()、ENCODEURICOMPONENT()区别详解
    此计算机当前已将连接限制
    一个由表结构生成表的存储过程
    微信小程序页面跳转传参
    前端性能优化术语
    get请求和post请求的区别
    从输入url到页面呈现的过程
  • 原文地址:https://www.cnblogs.com/mtant/p/4460823.html
Copyright © 2011-2022 走看看