0-1背包问题

    技术2022-05-19  22

    #include #include using namespace std; /* // 0-1背包问题: // 输入m, n 两个整数,从1n任取几个整数,使其和等于 m的可能有多少种? // 关键:同一个数不能出现2次 void beibao(int m, int n, int arr[], int num) {     for (int i = (m > n ? n : m); i > 0; --i)     {         arr[num] = i;         if(m - i > 0) //如果和还大于0             beibao(m - i, i - 1, arr, num + 1);         else if(m - i == 0)         {             arr[num + 1] = i;  //把值赋入             // print arr             for (int j = 0; j < num + 1; ++j)                 cout< << " ";             cout<         }     }     }

    int main(int argc, char* argv[]) {     int arr[12] = {0};     beibao(10, 12, arr, 0);     return 0; }


    最新回复(0)