ZOJ-3158

来源:互联网 发布:网络语赛车什么意思 编辑:程序博客网 时间:2024/05/06 09:14

!!!!!再一次被粗心给坑惨了。。无语了啊,DEBUG了我一个小时,最后错误竟然是因为了少加了换行符。。。我日了,搞这么长的输出You'd better buy another one! 我直接复制进来就没管了。。好坑啊T T  题目本身还是挺简单的,不过还有更优化的方法,我的函数重复计算略多。。不多说了,都是泪

 

#include<stdio.h>static int m, n, t, c[7][7], p[7], min;int nutrition_diff(){    int i, j, left = 0, right = 0;    for (i = 0; i < m; i++)    {        for (j = 0; j < p[i]; j++)            left += c[i][j];        for (j = p[i]; j < n; j++)            right += c[i][j];    }    return left > right ? left - right : right - left;}void dfs3158(int depth){    if (depth == m)    {        int diff = nutrition_diff();        if (diff < min)            min = diff;        return;    }    int i;    for (i = 1; i < n; i++)    {        p[depth++] = i;        dfs3158(depth);        depth--;    }}int main(){    while (scanf("%d %d", &m, &n) != EOF)    {        int i, j;        for (i = 0; i < m; i++)            for (j = 0; j < n; j++)                scanf("%d", &c[i][j]);        scanf("%d", &t);        min = 0x7FFFFFFF;        dfs3158(0);        if (min <= t)            printf("%d\n", min);        else            printf("You'd better buy another one!\n");    }    return 0;}

0 0
原创粉丝点击