HackerRank说〜对stdout~C没有反应

时间:2017-03-14 04:21:06

标签: c

我在尝试解决HackerRank上的this问题时遇到此问题。 在repl.it我的代码运行良好,但在他们的控制台上我有这个问题。

代码:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
  int t; //qtd de viagens
  int m; //dinheiro para os sorvetes
  int n; //qtd de sabores de sorvetes
  int c[n+1]; //preço de cada sorvete
  int r[t];
  int s[t];

  scanf("%d", &t);
  for(int j = 0; j < t; j++){
    scanf("%d", &m);
    scanf("%d", &n);
      for(int i = 1; i <= n; i++){
        scanf("%d", &c[i]);
      }
      for (int i = 1; i < n; i++){
        for(int k =i+1; k <= n; k++){
          if (c[i]+c[k] == m){
            r[j] = i;
            s[j] = k;
          }
        }
      }
  }  
  for(int i = 0; i < t; i++){
    printf("%d %d\n", *&r[i], *&s[i]);
  }
    return 0;
}

输入:

 2
 4
 5
 1 4 5 3 2
 4
 4
 2 2 4 3

repl.it上的输出:

1 4
1 2

HackerRank上的输出:

~ no response on stdout ~

它还为我提供了分段错误消息。

2 个答案:

答案 0 :(得分:0)

这里有2个问题:

  1. 您正在使用VLA,并且所有编译器都不支持它。 我正在谈论这个: 例如int c[n+1]。 Chage表示动态分配

  2. 在使用之前使用值初始化变量(就像您使用nt所做的那样)。

答案 1 :(得分:0)

List

我使用valgrind来检测内存泄漏:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
  int t, m, n; 
  //Declaration of dynamic arrays "r", "s" and "c"
  int *c, *r, *s;

  scanf("%d", &t);
  //Allocation of memory for  the int arrays "r" and "s"
  r = malloc(t * sizeof(int));
  s = malloc(t * sizeof(int));
  for(int j=0; j < t; j++){
    scanf("%d", &m);
    scanf("%d", &n);
   //Allocation of memory for the int array "c"
    c = malloc(n+1 * sizeof(int));
      for(int i = 1; i <= n; i++){
        scanf("%d", &c[i]);
      }
      for (int i = 1; i < n; i++){
        for(int k = i+1; k <= n; k++){
          if ((c[i] + c[k]) == m){
            r[j] = i;
            s[j] = k;
          }
        }
      }
   free(c);
  }  
  for(int i = 0; i < t; i++){
    printf("%d %d\n", *&r[i], *&s[i]);
  }
  free(r);
  free(s);

  return 0;
}