2018北邮网研机试

ProblemB:


1.问题描述:

 V字型数列,当且仅当三元组ia[j]并且a[k]>a[j],算作一个V型数列。


输入:
第一行为测试数据组数T
每组数据第一行为该数组的数字个数
接下来一行为数组元素
输出:
输出对应数组中符合v字形数列的个数

测试数据:
2
3
2 1 2
5
2 1 2 1 2
输出:
1
4
 

2.算法思想:

所谓的V字型数列,就是三个数构成的一个组合,两头大中间小,形似字母V

利用三层循环嵌套,找到所有的三个数构成的组合,再利用ia[j],a[k]>a[j]这两个条件筛选即可。

注:若自己能够清晰的明白遍历的过程,可以自己控制循环条件来满足条件:i;这样的话最后只用判断后一个条件即可

  for(int i=0;i  i是从0到n-2 j是i+1到n-1 k是j+1到n
    {
        for(int j=i+1;j         {
            for(int k=j+1;k             {
                if(a[i]>a[j]&&a[j]没有i j k大小的判断了
                {
                    count++;
                }
            }
        }
    }


3.算法实现:

#include
using namespace std;
int main(){
    int a[100];
    int n;
    int count=0;
    cin>>n;
    for(int t=0;t     {
        cin>>a[t];
    }
    for(int i=0;i     {
        for(int j=i+1;j         {
            for(int k=j+1;k             {
                if(ia[j]&&a[j]                 {
                    count++;
                }
            }
        }
    }
    cout<     return 0;

 

 

你可能感兴趣的:(C++算法)