• 跳房子 I


    题目描述


    跳房子,也叫跳飞机,是一种世界性的儿童游戏。游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格。跳房子的过程中,可以向前跳,也可以向后跳。
    假设房子的总格数是 count,小红每回合可能连续跳的步教都放在数组stepS 中,请问数组中是否有一种步数的组合,可以让小红两个回合跳到量后一格?
    如果有,请输出索引和最小的步数组合。
    注意:
    数组中的步数可以重复,但数组中的元素不能重复使用。
    提供的数据保证存在满足题目要求的组合,且索引和最小的步数组合是唯一的。

    输入描述


    第一行输入为房子总格数 COunt,它是 int 整数类型
    第二行输入为每回合可能连续跳的步数,它是 int 整数数组类型。


    输出描述


    返回满足要求的索引和最小的步数组合(顺序保持 steps 中原有顺序)


    补充说明


    count ≤ 1000, 0 ≤ steps.length ≤5000, -100000000 ≤ steps ≤ 100000000

    示例1:

    输入:

    1. 8
    2. [-1,2,4,9,6]

    输出

    [-1,9]
    

    备注:此样例有多种组合满足两回合跳到最后,譬如:[-1,9],[2,6],其中[-1.9]阳的索引和为 0+3=3,[2,6]的索和为1+4=5,所以索引和最小的步数组合[-1,9]

    示例2:

    输入:

    1. 7
    2. [1,4,5,2,2]

    输出

    [5,2]

    参考C++代码 

    1. #include
    2. using namespace std;
    3. void StepHouse(vector<int> &res, int count, vector<int> steps)
    4. {
    5. int sum = INT_MAX;
    6. int l = 0, r = 0;
    7. for (int i = 0; i < steps.size(); ++i) {
    8. for (int j = i + 1; j < steps.size(); ++j) {
    9. if (i + j >= sum) {
    10. break;
    11. }
    12. if (steps[i] + steps[j] == count) {
    13. sum = i + j;
    14. res[0] = steps[i];
    15. res[1] = steps[j];
    16. }
    17. }
    18. }
    19. }
    20. int main()
    21. {
    22. int count;
    23. cin >> count;
    24. vector<int> arr;
    25. vector<int>res(2);
    26. int n = 0;
    27. while (cin >> n) {
    28. arr.emplace_back(n);
    29. if (cin.get() == '\n') break;// 遇到回车后停止输入
    30. }
    31. StepHouse(res, count, arr);
    32. cout << "[" << res[0] << ", " << res[1] << "]"<< endl;
    33. return 0;
    34. }

  • 相关阅读:
    Handler消息机制-Native层
    大数据Doris(十九):数据导入(Load)
    高性能计算软件与开源生态| ChinaOSC
    【牛客】【查找两个字符串a,b中的最长公共子串】【动态规划】
    sqlcipher源码及编译
    Maven环境搭建和简单实现
    微服务框架 SpringCloud微服务架构 12 DockerCompose 12.2 部署微服务集群
    Vue超详宝典(第二部)--万字长文硬核发布
    个人博客系统的总结
    JDBC-03:PreparedStatement如何实现对数据库的增删改查操作
  • 原文地址:https://blog.csdn.net/zhendong825/article/details/134039612