题目描述
对一个输入的序列S进行任意交换,并判断交换后的数列S能否成为等差数列。
输入描述
第一行:整数n,即数列的长度 如 Input: 3
第二行:n个元素的数组a[i],即数列中的每个整数 3 1 2
输出描述
如果可以变为等差数列输出“Possible”,否则输出“Impossible” Output: Possible
分析
对输入的序列进行排序,并设置flag标志判断是否为等差数列
代码
#include<stdio.h>
int main()
{
int t,i,j,n;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for (i = 0; i < n-1; i++) // 冒泡排序原理
{
for (j = 0; j < n-1 - i; j++)
{
if (a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
int temp=a[1]-a[0];
bool flag=false;//该语句为flag的初始化,可以是true也可以是false,不影响程序结果
for(i=1;i<n;i++)
{
if(a[i]-a[i-1]==temp)
{
flag=true;
}
else
{
flag=false;
}
}
if(flag)
{
printf("possible");
}
else
{
printf("impossible");
}
}