#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<math.h>
using namespace std;
#define N 5
#define M 5
unsigned int f[100] ;
int main()
{
int weight[6] = { 0, 2, 2, 3, 4, 5 };
int value[6] = { 0, 5, 2, 3, 4, 1 };
for (int i = 1; i <= N; i++)
for (int j = M; j >=1; j--)
if (weight[i] <= j)
{
f[j] = max(f[j], f[j - weight[i]] + value[i]);
}
for (int i = 1; i <= 5; i++)
cout << f[i] << " ";
#include<vector>
#include<algorithm>
#include<string>
#include<math.h>
using namespace std;
#define N 5
#define M 5
unsigned int f[100] ;
int main()
{
int weight[6] = { 0, 2, 2, 3, 4, 5 };
int value[6] = { 0, 5, 2, 3, 4, 1 };
for (int i = 1; i <= N; i++)
for (int j = M; j >=1; j--)
if (weight[i] <= j)
{
f[j] = max(f[j], f[j - weight[i]] + value[i]);
}
for (int i = 1; i <= 5; i++)
cout << f[i] << " ";
}
八皇后问题
const int num = 8;/*可以随意修改,num是多少解的就是几皇后问题*/
int arr[num];
int count = 0;
void display()/*输出数组顺便统计解的个数*/
{
for (int i = 0; i<num; ++i)
printf("%d\t", arr[i]);
printf("\n");
count++;
}
void queens(int pos )
{
/*剪枝步骤*/
for (int i = 0; i<pos - 1; ++i)
{
int off = arr[i] - arr[pos - 1];
if (off == 0 || off == pos - 1 - i || -off == pos - 1 - i)
return;
}
if (pos == num)
{
display(); return;
}
for (int k = 0; k<num; ++k)
{
arr[pos] = k;
queens(pos + 1);
}
}
void main()
{
queens(0);
std::cout << count << std::endl;
}