【发布时间】:2019-07-22 15:09:22
【问题描述】:
我是编程新手,C 是我唯一知道的语言。阅读一些用其他编程语言编写的相同问题的答案。我已经为此编写了一些代码,但我只得到了几个正确的测试用例(准确地说是 4 个)。如何编辑我的代码才能被接受?
我尝试将数组的一个元素与其余元素进行比较,然后如果它们的总和可被 k 整除,则删除该元素(正在与初始元素进行比较),然后继续直到数组中有两个元素它们的总和可以被 k 整除。这是问题的链接: https://www.hackerrank.com/challenges/non-divisible-subset/problem
#include<stdio.h>
#include<stdlib.h>
void remove_element(int array[],int position,long int *n){
int i;
for(i=position;i<=(*n)-1;i++){
array[i]=array[i+1];
}
*n=*n-1;
}
int main(){
int k;
long int n;
scanf("%ld",&n);
scanf("%d",&k);
int *array=malloc(n*sizeof(int));
int i,j;
for(i=0;i<n;i++)
scanf("%d",&array[i]);
for(i=n-1;i>=0;i--){
int counter=0;
for(j=n-1;j>=0;j--){
if((i!=j)&&(array[i]+array[j])%k==0)
{
remove_element(array,j,&n);
j--;
continue;
}
else if((i!=j)&&(array[i]+array[j])%k!=0){
counter++;
}
}
if(counter==n-1){
printf("%ld",n);
break;
}
}
return 0;
}
我从 20 个测试用例中只得到了大约 4 个测试用例。
【问题讨论】: