2016-10-03 27 views
0

問題陳述:如何從給定數組中打印負數子數的數目?

給定n個整數的數組,找到並打印在新的一行其負子陣列的數目(A子陣列是負如果其元素的總和爲負值。)

採樣輸入

1-2 4-5 1

樣本輸出

結果,我的代碼產量

輸入(stdin)

1-2 4-5 1

你的輸出(標準輸出)

期望輸出

編譯消息

錯誤答案

我的代碼:

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); 
     } 
    }