当前位置: 代码迷 >> Java相关 >> 求解一道acm题
  详细解决方案

求解一道acm题

热度:230   发布时间:2008-12-08 18:58:26.0
求解一道acm题
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=2023
提交了10几次 还是wrong answer
又找了c语言测试通过的程序 修改为java如下 依然wrong answer..
请大家帮我看看是哪出了问题..
程序代码:
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Scanner;

public class Main{
    public static void main(String[]args){
        Scanner cin=new Scanner(System.in);
        DecimalFormat df=new DecimalFormat("0.00");
        while(cin.hasNext()){
            int n=cin.nextInt();
            int m=cin.nextInt();
            int[][]a=new int[n][m];
            int[]b=new int[n];
            int[]c=new int[m];
            Arrays.fill(b,0);
            Arrays.fill(c,0);
            for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){
                    a[i][j]=cin.nextInt();
                    b[i]+=a[i][j];
                    c[j]+=a[i][j];
                }
            }
            for(int i=0;i<n;i++){
                if(i==n-1)
                    System.out.println(df.format(1.0*b[i]/m)+" ");
                else
                    System.out.print(df.format(1.0*b[i]/m)+" ");
            }
            for(int i=0;i<m;i++){
                if(i==m-1)
                    System.out.println(df.format(1.0*c[i]/n)+" ");
                else
                    System.out.print(df.format(1.0*c[i]/n)+" ");
            }
            int t=0;
            for(int i=0;i<n;i++){
                int d=1;
                for(int j=0;j<m;j++){
                    if(a[i][j]<1.0*c[j]/n){
                        d=0;
                        break;
                    }
                }
                if(d==1)t++;

            }
            System.out.println(t+"\n");
        }
    }
}
搜索更多相关的解决方案: acm  求解  

----------------解决方案--------------------------------------------------------
为什么没有题目……
----------------解决方案--------------------------------------------------------
我把题目发一下

[[it] 本帖最后由 freish 于 2008-12-9 11:54 编辑 [/it]]
----------------解决方案--------------------------------------------------------
题目很简单,只是要求比较绕口,感觉只要细心,这道题还是很容易AC的。
----------------解决方案--------------------------------------------------------
为什么C可以通过 同样的程序java无法通过呢?我实在找不出差别在哪里了
C code:
程序代码:
#include <stdio.h>
#include <string.h>

int main(void)
{
    int n, m;
    int i, j;
    int t, d;
    int s[50];
    int c[5];
    int sc[50][5];

    while (scanf("%d%d", &n, &m) != EOF)
    {
        memset(s, 0, sizeof(s));
        memset(c, 0, sizeof(c));
        memset(sc, 0, sizeof(sc));
        for (i = 0 ; i < n ; i++)
        {
            for (j = 0 ; j < m ; j++)
            {
                scanf("%d", &sc[i][j]);
                c[j] += sc[i][j];
                s[i] += sc[i][j];
            }
        }
        for (i = 0 ; i < n ; i++)
            printf("%.2lf%c", s[i] * 1.0 / m, i < n - 1 ? ' ' : ' \n');
        for (i = 0 ; i < m ; i++)
            printf("%.2lf%c", c[i] * 1.0 / n, i < m - 1 ? ' ' : ' \n');
        for (t = i = 0 ; i < n ; i++)
        {
            for (d = 1, j = 0 ; j < m ; j++)
            {
                if (sc[i][j] < 1.0 * c[j] / n)
                {
                    d = 0;
                    break;
                }
            }
            if (d) t++;
        }
        printf("%d\n\n", t);
    }

    return 0;
}

----------------解决方案--------------------------------------------------------
也许是时间用得太长了..整整差了30倍
有时候时间过长也过显示Wrong Answer...是这样么?
----------------解决方案--------------------------------------------------------
不是,一般来说JAVA运行的时间是比C长,但自动测试的时候你提交的JAVA它会相应的增加运行时间。
----------------解决方案--------------------------------------------------------
但是没法用java通过么?我是非常期望用java写出来的...
----------------解决方案--------------------------------------------------------
  相关解决方案