1. 程式人生 > >求給定數等於最少的幾個完全平方數之和

求給定數等於最少的幾個完全平方數之和

given an integer ,find 最小長度minlen 的expression of integer, minlen 定義為多少個完全平方數相加?例如 14 = 1 + 4 + 9, minlen = 3
int MinExpressionInteger(int i)
{
    int k = sqrt(i);
    if (k*k == i)
        return 1;
    int minLen = INT_MAX;
    while (k > sqrt(i / 2) - 1)
    {
        int len = 1 + MinExpressionInteger(i - k*k);
        if (minLen > len)
            minLen = len;
        k--;
    }
    return minLen;
}