usaco-milk3-mother's milk-pass

这个题目比较抽象:

/*
ID: qq104801
LANG: C++
TASK: milk3
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

#define NMAX 21
#define min(a,b) (a>b?b:a)

int a,b,c;
int v[21][21][21]={0};

void dfs(int x,int y,int z)
{
    if (x<0 || y<0 || z<0)return;
    if(!v[x][y][z])
    {
        v[x][y][z]=1;
        dfs(x+min(y,a-x),y-min(y,a-x),z);
        dfs(x+min(z,a-x),y,z-min(z,a-x));

        dfs(x-min(x,b-y),y+min(x,b-y),z);
        dfs(x,y+min(z,b-y),z-min(z,b-y));

        dfs(x-min(x,c-z),y,z+min(x,c-z));
        dfs(x,y-min(y,c-z),z+min(y,c-z));
    }
}

int k[21];
int t=0;

void test()
{    
    FILE *fin = fopen ("milk3.in", "r");
    FILE *fout = fopen ("milk3.out", "w"); 
    fscanf(fin,"%d %d %d",&a,&b,&c);
    dfs(0,0,c);
    for(int i=0;i<21;i++)
        for(int j=0;j<21;j++)
        {
            if(v[0][j][i])k[t++]=i;
            //printf("%d
",k[t-1]);
        }
    int i;
    for(i=0;i<t-1;++i)fprintf(fout,"%d ",k[i]);
    if(i)fprintf(fout,"%d
",k[i]);

    fclose(fin);
    fclose(fout);
}

main () {    
    test();    
    exit (0);
}

测试用例:

USER: ll tom [qq104801]
TASK: milk3
LANG: C++

Compiling...
Compile: OK

Executing...
   Test 1: TEST OK [0.008 secs, 3532 KB]
   Test 2: TEST OK [0.005 secs, 3532 KB]
   Test 3: TEST OK [0.003 secs, 3532 KB]
   Test 4: TEST OK [0.011 secs, 3532 KB]
   Test 5: TEST OK [0.008 secs, 3532 KB]
   Test 6: TEST OK [0.008 secs, 3532 KB]
   Test 7: TEST OK [0.008 secs, 3532 KB]
   Test 8: TEST OK [0.011 secs, 3532 KB]
   Test 9: TEST OK [0.008 secs, 3532 KB]
   Test 10: TEST OK [0.008 secs, 3532 KB]

All tests OK.

YOUR PROGRAM ('milk3') WORKED FIRST TIME! That's fantastic -- and a rare thing. Please accept these special automated congratulations.

Here are the test data inputs:

------- test 1 ----
2 5 10
------- test 2 ----
20 20 20
------- test 3 ----
5 11 15
------- test 4 ----
2 12 20
------- test 5 ----
19 4 11
------- test 6 ----
5 11 13
------- test 7 ----
3 20 20
------- test 8 ----
7 16 20
------- test 9 ----
20 10 9
------- test 10 ----
7 12 18

Keep up the good work!
Thanks for your submission!
/***********************************************

看书看原版,原汁原味。

不会英文?没关系,硬着头皮看下去慢慢熟练,才会有真正收获。

没有原书,也要网上找PDF来看。

网上的原版资料多了去了,下载东西也到原始下载点去看看。

你会知其所以然,呵呵。

***********************************************/

原文地址:https://www.cnblogs.com/dpblue/p/3949925.html