华为OD机试跳房子2

跳房子的过程中,如果有踩线等违规行为会结束当前回合,甚至可能倒退几步.假设房子的总格数是count.小红每回合可能连续跳的步数都放在数组steps中,请问数组中是否有一种步数的组合,可以让小红三个回合跳到最后一格?如果有,请输出索引和最小的步数组合(数据保证索引和最小的步数组合是唯一的)。注意:数组中的步数可以重复,但数组中的元素不能重复使用

输入描述:

第一行输入为房子总格数count,它是int整数类型

第二行输入为每回合可能连续跳的步数,它是int整数数组类型

输出描述

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

示例

输入:

[1,4,5,2,0,2]

输出

[4,5,0]

#include <bits/stdc++.h>
using namespace std;
int main() {
    int num = 0;
    cin >> num;
    vector<int>a;
    vector<int>ab;
    int tmp = 0;
    while (cin >> tmp) {
        a.push_back(tmp);
        if (cin.get() == '\n')
            break;
    }
    int i = 0,j = 1,k = 2;
    while (a[i] + a[j] + a[k] != num) {
            k++;
        if (a[i] + a[j] + a[k] != num)
            j++;
        if (a[i] + a[j] + a[k] != num)
            i++;
            }
    if (a[i] + a[j] + a[k] == num) {
            cout << '['<<a[i]<<',' << a[j]<<',' << a[k]<<']';
            }
    else if (a[i] + a[j] + a[k] > num) {
            return -1;
        }
}

全部评论

相关推荐

评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务