TSP+dp+状态压缩的本质

/*
dis[1][2]=1;dis[1][3]=3;dis[1][4]=6;
dis[2][3]=2;dis[2][4]=5;
dis[3][4]=3;
二进制从右往左依次代表的1-n,0代表没有经过1代表经过了,比如3化成二进制为11代表经过了1和2.
dp[i][j]代表的状态为在状态i的时候从1出发最后到达j的值
只经过一个点
dp[1][1]=0//初始化,其他的都为无穷大
只经过两个点
dp[11][2]=1;//dp[3][2]=1也就是经过两个点而且由1-2的,值为1
dp[101][3]=3;//dp[5][2]=1也就是经过两个点而且由1-3的,值为3(因为每个点可以经过无限次所以在这个时候经过了2然后到达3也看做只经过3而没有经过2)
dp[1001][4]=6;//dp[9][4]=6也就是经过了两个点而且由1-4的,值为4
只经过三个点
dp[111][3]=3;//dp[7][3]=3由dp[3][2](也就是1-2)推来,现在的状态就表示1-2-3
dp[1011][4]=6;//dp[11][4]=6由dp[3][2](也就是1-2)推来,现在的状态就表示1-2-4
dp[111][2]=5;//dp[7][2]=5由dp[5][2](也就是1-3)推来,现在的状态就表示1-3-2
dp[1101][4]=6;//dp[13][4]=5由dp[5][2](也就是1-3)推来,现在的状态就表示1-3-4
dp[1101][3]=9;//dp[13][3]=9由dp[9][4](也就是1-4)推来,现在的状态就表示1-4-3
dp[1101][2]=11;//dp[13][2]=11由dp[9][4](也就是1-4)推来,现在的状态就表示1-4-2
只经过四个点
dp[1111][4]=6;//dp[15][4]=6由dp[7][3](也就是1-2-3)推来,现在的状态就表示1-2-3-4
dp[1111][4]=10;//dp[15][3]=10由dp[11][4](也就是1-3-2)推来,现在的状态就表示1-3-2-4(由于会和1-2-3-4比较所以这一次的状态不会保留下来也就是说dp[15][4]的值为6而不为9)
dp[1111][3]=9;//dp[15][3]=9由dp[7][3](也就是1-2-4)推来,现在的状态就表示1-2-4-3
dp[1111][3]=13;//dp[15][3]=13由dp[7][2](也就是1-4-2)推来,现在的状态就表示1-4-2-3(由于会和1-2-4-3比较所以这一次的状态不会保留下来也就是说dp[15][3]的值为9而不为13)
dp[1111][2]=11;//dp[15][2]=11由dp[13][4](也就是1-3-4)推来,现在的状态就表示1-3-4-2
dp[1111][2]=11;//dp[15][2]=11由dp[13][3](也就是1-4-3)推来,现在的状态就表示1-4-3-2(由于会和1-2-3-4-3比较,所以这一次的状态包不保存都一样)
由上面可以看出:
所有的路径为
1-2-3-4
1-3-2-4
1-2-4-3
1-4-2-3
1-3-4-2
1-4-3-2
也就是枚举了所有的情况,算是另一种策略的暴力吧。
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值