请教一道简单的C语言题目,求大神解答
描述给定一个整数序列a1,a2,...,an,请您判断是否为有序序列:-如果序列是严格递减序列(即ai>ai+1,i=1,2,...,n-1),输出-1-如果序列是严格递...
描述
给定一个整数序列a1,a2,...,an,请您判断是否为有序序列:
-如果序列是严格递减序列(即ai>ai+1,i=1, 2, ..., n-1),输出-1
-如果序列是严格递增序列(即ai<ai+1,i=1, 2, ..., n-1),输出1
-如果是非有序序列,则输出0
输入
输入数据有多组,第一行为一个正整数T,表示数据组数,接下来有T行。
每行的第一个数为一个正整数n(2<=n<=1000),后面有n个整数,每个数之间由空格分隔。
输出
输出有T行,每行内容为一个整数,值为-1、1或者0。
样例输入
6
5 9 5 4 2 1
6 1 3 2 5 4 7
8 1 2 3 4 5 6 7 8
7 7 6 5 4 3 2 1
3 1 3 2
2 1 2
样例输出
-1
0
1
-1
0
1
我写的程序:
#include <stdio.h>
int main()
{ int i,n,t,k,num[1000];
while(scanf("%d",&t)!=EOF)
{ for(i=0;i<=1000;i++)
for(i=1;i<=t;i++)
{ scanf("%d",&n);
for(k=0;k<n;k++)
scanf("%d",&num[k]);
k=0;
if(n==2)
{if(num[k+1]>num[k])
printf("1\n");
else
printf("-1\n");
continue;
}
while(num[k+1]-num[k]>0)
{ k++;
if(num[k+1]-num[k]<0)
{printf("0\n");
break;
}
if(k==n-2)
{printf("1\n");
break;
}
}
k=0;
while(num[k+1]-num[k]<0)
{ k++;
if(num[k+1]-num[k]>0)
{printf("0\n");
break;
}
if(k==n-2)
{printf("-1\n");
break;
}
}
}
}
return 0;
}
在在线评测系统中提示我Wrong Answer at Test 2,用样例测试的时候都是完全正确的啊,求大神解答 展开
给定一个整数序列a1,a2,...,an,请您判断是否为有序序列:
-如果序列是严格递减序列(即ai>ai+1,i=1, 2, ..., n-1),输出-1
-如果序列是严格递增序列(即ai<ai+1,i=1, 2, ..., n-1),输出1
-如果是非有序序列,则输出0
输入
输入数据有多组,第一行为一个正整数T,表示数据组数,接下来有T行。
每行的第一个数为一个正整数n(2<=n<=1000),后面有n个整数,每个数之间由空格分隔。
输出
输出有T行,每行内容为一个整数,值为-1、1或者0。
样例输入
6
5 9 5 4 2 1
6 1 3 2 5 4 7
8 1 2 3 4 5 6 7 8
7 7 6 5 4 3 2 1
3 1 3 2
2 1 2
样例输出
-1
0
1
-1
0
1
我写的程序:
#include <stdio.h>
int main()
{ int i,n,t,k,num[1000];
while(scanf("%d",&t)!=EOF)
{ for(i=0;i<=1000;i++)
for(i=1;i<=t;i++)
{ scanf("%d",&n);
for(k=0;k<n;k++)
scanf("%d",&num[k]);
k=0;
if(n==2)
{if(num[k+1]>num[k])
printf("1\n");
else
printf("-1\n");
continue;
}
while(num[k+1]-num[k]>0)
{ k++;
if(num[k+1]-num[k]<0)
{printf("0\n");
break;
}
if(k==n-2)
{printf("1\n");
break;
}
}
k=0;
while(num[k+1]-num[k]<0)
{ k++;
if(num[k+1]-num[k]>0)
{printf("0\n");
break;
}
if(k==n-2)
{printf("-1\n");
break;
}
}
}
}
return 0;
}
在在线评测系统中提示我Wrong Answer at Test 2,用样例测试的时候都是完全正确的啊,求大神解答 展开
3个回答
展开全部
你没考虑到相邻两个数相等你情况。你看样例第四组数开头有两个7,输出是-1,说明严格递增是a[i+1]>=a[i],严格递减是a[i]>=a[i+1]。
追问
你理解错了,每行的第一个数字是该行数字的个数,也就是说第四行的第一个7表示的是这一行后面有7个数字
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码编译能通过,但算法有问题,无限输入,没有结束标志。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询