程序员代码面试指南 1.11:可见的山峰对数量(数学题)

可见的山峰对数量

https://www.nowcoder.com/practice/80d076bcea594b86ba55b913de4c069d

1、思路

  • 当环形结构中只有一座山峰时,可见山峰对数量为0。当有两座时,可见山峰对数量为1。当有三座时可见山峰对数量为3。可以推导得出当有n座山峰时,可见山峰对数量为2 * n - 3

  • 假设环形结构中有n座山峰,除了最高山峰和次高山峰外还剩下n - 2座山峰,这n - 2座山峰中每一座都能根据小找大的方式找到两对,所以一共有(i - 2) * 2对,再加上最高山峰和次高山峰这对,一共就有2 * n - 3对。

2、代码

#include <iostream>

using namespace std;

int main()
{
    int T;
    cin >> T;

    while (T -- )
    {
        int n, p, m;
        cin >> n >> p >> m;

        cout << max(2 * n - 3, 0) << endl;
    }

    return 0;
}

主要是为左程云的《程序员代码面试指南》这本书改写C++版的题解。

全部评论

相关推荐

点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务