Uva(12235)(helpbubu)

链接:https://vjudge.net/problem/UVA-12235
思路:状态表示dp[i][j][k][m],前i本中拿j本且拿出的集合为k最后一本为m的状态,转移就很简单了见代码,注意有两个点,需要一个特殊的值表示最后没放的情况,其次最后需要比较一下最后的集合和原集合元素差,差几答案就需要加几(无论放哪里混乱度都会+1)
代码:

#include
using namespace std;

const int maxn = 105;
int dp[maxn][maxn][1<<8][9];
int a[maxn];
int one[1<<8];
int n,m;

int main(){
    int kase = 0;
    for(int i=0;i<(1<<8);i++){
        for(int j=0;j<8;j++){
            if(i&(1<

你可能感兴趣的:(Uva(12235)(helpbubu))