mod 4 最优路径问题
在上图中找出从第1点到第4点的一条路径,要求路径长度mod 4的余数最小。
分析:这个图是一个多段图,而且是一个特殊的多段图。虽然这个图的形式比一般的多段图要简单,但是这个最优路径问题却不能用动态程序设计方法来做。因为一条从第1点到第4点的最优路径,在它走到第2点、第3点时,路径长度mod 4的余数不一定是最小,也就是说最优策略的子策略不一定最优——这个问题不满足最优化原理。但是我们可以把它转换成判定性问题,用递推法来解决。设
fk(sk)——从第1点到第k点的长度mod 4为sk的路径是否存在的标志。显然
(边界条件)
#include<stdio.h>
#include<string.h>
#include<math.h>
int len[110][11];
int f[110][4];
int count[110];
int abs(int a){return a>0?a:-a;}
int main(){
int n;
int i,j,s,k,u;
while(scanf("%d",&n)!=EOF){
for(i = 2;i<=n;i++){
scanf("%d",&count[i]);
fo