本文主要是介绍uva 10730,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:如果数列中没有三个元素的子序列构成等差数列输出yes 不然no
标记每个数出现的位置 然后从0开始寻找三个元素的等差数列 如果这三个元素的位置满足条件则原数列中存在等差数列
#include<cstdio>
#include<cstring>int n,num[10010];int main()
{int n;while(scanf("%d",&n) == 1 && n){getchar();for(int i = 0; i < n; i++){int a;scanf("%d",&a);num[a] = i;}int flag = 0;for(int i = 0; i < n; i++){for(int j = 1; 2*j+i < n; j++){if(num[i] < num[i+j] && num[i+j] < num[i+2*j]){flag = 1;puts("no");}else if(num[i] > num[i+j] && num[i+j] > num[i+2*j]){flag = 1;puts("no");}if(flag)break;}if(flag)break;}if(!flag)puts("yes");}return 0;
}
这篇关于uva 10730的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!