2016-10-03 3 views
0

Постановка задачи:Как напечатать количество отрицательных подмассивов из заданного массива?

Учитывая массив из п целых чисел, найти и распечатать его количество отрицательных подмассивов на новой линии (A подмассив является отрицательным, если общая сумма его элементов является отрицательным.)

.

Пример ввода

1 -2 4 -5 1

Пример вывода

Результат, что мой код дает

ввода (STDIN)

1 -2 4 -5 1

Ваш выход (stdout)

Ожидаемый результат

Компилятор Сообщение

Неправильный ответ

Мой код:

import java.io.*; 
import java.util.*; 
import java.text.*; 
import java.math.*; 
import java.util.regex.*; 

public class Solution { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     int n = scan.nextInt(); 
     int a[] = new int[n]; 
     int b[] = new int[n]; 
     int count=0; 
     int i,j,sum = 0; 
     for(i=0;i<n;i++) 
      { 
      a[i] = scan.nextInt();    
     } 
     for(i=0;i<n;i++) 
      { 
     if(a[i]<0){count++;} 
     } 
     for(i=0;i<n;i++) 
      { 
      for(j=0;j<n;j++) 
       { 
      sum = a[i] + sum; 
      b[j] = sum; 
      } 
     } 
     for(j=0;j<n;j++) 
       { 
     if(b[j]<0){count++;} 
     } 
     System.out.println(count); 

    } 
} 

Где я иду не так?

+0

что такое b [] массив для? – Gaur93

+1

Вы пытались использовать отладчик? –

+0

Если я правильно понимаю это требование, я до сих пор не смог найти 9 комбинаций для данного ввода и нашел только 6. (1, -2); (4, -5); (- 5,1); (-2,4, -5); (- 2,4, -5,1), (1, -2,4, -5,1). Я что-то не хватает? – drgPP

ответ

0

Сделано несколько изменений в предыдущей логике, и теперь этот код работает нормально.

import java.util.*; 
public class Solution { 

     public static void main(String[] args) { 
      Scanner scan = new Scanner(System.in); 
      int n = scan.nextInt(); 
      int a[] = new int[n]; 
      int count=0; 
      int i,j,sum = 0; 
      for(i=0;i<n;i++) 
      { 
       a[i] = scan.nextInt(); 
      } 
      scan.close(); 
      for(i=0;i<n;i++) 
      { 
       sum = 0; 
       for(j=i;j<n;j++) 
       { 
        sum = a[j] + sum; 
        if(sum<0){ 
         count++; 
        } 
       } 
      } 
      System.out.println(count); 
     } 
    } 
Смежные вопросы