1384. 饲料调配

枚举。每种饲料的份数取值为(0 sim 100),时间复杂度为(O(101^3))

int g[3];
int a[3][3];

int main()
{
    for(int i = 0; i < 3; i++) cin >> g[i];
    if(g[0] + g[1] + g[2] == 0) puts("0 0 0 0");
    else
    {
        for(int i = 0; i < 3; i++)
            for(int j = 0; j < 3; j++)
                cin >> a[i][j];
        
        int sum = 301;
        int ans[4] = {0};
        for(int i = 0; i <= 100; i++)
            for(int j = 0; j <= 100; j++)
                for(int k = 0; k <= 100; k++)
                {
                    if(i + j + k == 0) continue;
                    int s[3] = {0};
                    for(int l = 0; l < 3; l++)
                        s[l] = i * a[0][l] + j * a[1][l] + k * a[2][l];
                    
                    int t = (s[0] + s[1] + s[2]) / (g[0] + g[1] + g[2]);
                    if(s[0] == t * g[0] && s[1] == t * g[1] && s[2] == t * g[2] && i + j + k < sum)
                    {
                        sum = i + j + k;
                        ans[0] = i, ans[1] = j, ans[2] = k, ans[3] = t;
                    }
                }
        
        if(sum > 300) puts("NONE");
        else 
        {
            for(int i = 0; i < 4; i++)
                cout << ans[i] << ' ';
            cout << endl;
        }
    }
}
原文地址:https://www.cnblogs.com/fxh0707/p/14897748.html