兄弟们,问一个题目,我的这个题目在本地的DevC++上运行结果是正确的,但到牛客网的编译器上就会报错,有明白的人能解答一下吗
题目描述
查找一个数组的第K小的数,注意同样大小算一样大。 如 2 1 3 4 5 2 第三小数为3。
输入描述:
输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000),再输入k。
输出描述:
输出第k小的整数。
我的代码是这样的:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
int counter = 0;//计数器
scanf("%d\n",&counter);
int arr[counter];//数字数组
int numdoll = 0;//数组计数器
while (scanf("%d",&arr[numdoll]) != EOF && getchar() != '\n'){
numdoll++;
} //循环读入多组整型数据,都以空格分隔。
int seq = 0;//第几小的数
scanf("%d",&seq);
int i,j,temp=0;
for(j=0;j<counter;j++){//冒泡排序
for(i=0;i<counter-j;i++){
if(arr[i]>arr[i+1]){
temp = arr[i+1];
arr[i+1] = arr[i];
arr[i] = temp;
}
}
}
int index=1;//下标
int b[counter];//存放不重复元素的数组
b[0] = arr[0];
for(int i=1;i<counter;i++){
if(arr[i]!=arr[i-1]){//如果当前遍历的元素和前一个元素不相等
b[index++] = arr[i];//存到b中
}
}
printf("%d",b[seq-1]);
}
实在不知道哪里有问题,希望大神给解答一下。