import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String arg[]){
 
 Scanner sc = new Scanner(System.in);
     int szcount = sc.nextInt();
     int result[] = new int[szcount];
     for(int j=0;j<szcount;j++){
     int szlength = sc.nextInt();
     int [] sz = new int [szlength];
     for(int i=0;i<szlength;i++){
      sz[i]=sc.nextInt();
     }
      result[j]=Main.getcount(sz);
     }
     for(int r:result)
    System.out.println(r);
}

public static boolean contains(int num,int[] nums,int offset){
for(int i=0;i<offset;i++){
if(num==nums[i])return true;
}
return false;
}

public static int getcount(int[] array){
Arrays.sort(array);
int count = 0;
for(int i =array.length-1;i>=0;i--){
for(int j =i;j>=0;j--){
if(contains(array[i]-array[j], array,j)){
count++;
}
}
}
return count;
}
}以上代码我本机调试都可以啊。怎么有道就说我有错误呢,他们输入 输入测试数据的。

解决方案 »

  1.   

    import java.util.Arrays;
    import java.util.Scanner;
    /**
     * @author 不再悲伤
     */
    public class Main 
    {
    public static void main(String arg[])
    {  
    Scanner sc = new Scanner(System.in);
    int szcount = sc.nextInt();
    int result[] = new int[szcount];
    for(int j=0;j<szcount;j++)
    {
    int szlength = sc.nextInt();
    int [] sz = new int [szlength];
    for(int i=0;i<szlength;i++)
    {
    sz[i]=sc.nextInt();
    }
    result[j]=Main.getcount(sz);
    }
    for(int r:result)
    System.out.println(r);
    } public static boolean contains(int num,int[] nums,int offset){
    for(int i=0;i<offset;i++)
    {
    if(num==nums[i])
    return true;
    }
    return false;
    } public static int getcount(int[] array)
    {
    Arrays.sort(array);
    int count = 0;
    for(int i =array.length-1;i>=0;i--)
    {
    for(int j =i;j>=0;j--)
    {
    //好像是这里出了点问题,但不知道怎么找?
    if(contains(array[i]-array[j], array,j))
    {
    count++;
    }
    }
    }
    return count;
    }
    }
      

  2.   

    /*--------------------------------------------------------------------------
     *       Filename:  heshu.cc
     *    Description:  和数
     *        Version:  1.0
     *        Created:  2010年05月28日 21时49分37秒
     *       Revision:  none
     *       Compiler:  gcc
     *         Author:  zero , [email protected]
     *       Division:  Software College Northeastern University
     ---------------------------------------------------------------------------*/
    #include"iostream"
    #include"stdlib.h"
    using namespace std;
    int main(void)
    {
    int  zushu;
    int  arrayN;
    int  *array;
    cin >> zushu;
    int  num[zushu] ; 
    for( int i=0 ; i<zushu ; i++ )
    {
    int value=0 ; 
    cin >> arrayN;
    array=(int *)calloc(arrayN,sizeof(int));
    for(int j=0;j<arrayN;j++)
    {
    cin >> array[j];
    }
    for(int k=0;k<arrayN;k++)
    {
    for(int q=0;q<arrayN-1;q++)
    {
    for(int m=q+1;m<arrayN-q;m++)
    {
    int temp=array[q]+array[m];
    if(array[k] == temp)
    ++value;
    }
    }
    }
    free(array);
    num[i]=value ; 
    }
    for(int i=0 ; i<zushu ; i++)
    cout << num[i] << endl ; 
    return 0;
    }
      

  3.   

    原题是这样的:
    描述 
    给定一个整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 
    输入 
    第一行是一个整数T,表示一共有多少组数据。 1<= T <= 100
    接下来的每组数据共两行,第一行是数列中数的个数n ( 1 <= n <= 100),第二行是由n个整数组成的数列。输出 
    对于每组数据,输出一个整数(占一行),就是数列中等于其他两个数之和的数的个数。 
    样例输入 
    2
    4
    1 2 3 4
    5
    3 5 7 9 10
    样例输出 
    2
    1
    现在我这个程序出现的bug是 有数字‘0’元素的处理。楼上的朋友,你的使用什么语言我不太清楚,但是感谢以上兄弟的关注。题很有意思,有兴趣的大家可以解一解。