最优路径问题 mod 4 的最小值

来源:互联网 发布:淘宝超a鞋店推荐 编辑:程序博客网 时间:2024/09/21 08:54

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]);            for(j = 1;j<=count[i];j++){                scanf("%d",&len[i][j]);            }        }        memset(f,0,sizeof(f));        f[1][0] = 1;        for(k = 2;k<=n;k++){            for(s = 0;s<=3;s++){                int test = 0;                for(u = 1;u<=count[k];u++){                    if(f[k-1][abs(s-len[k][u])] )test = 1;                }                if(test) f[k][s] = 1;            }        }        for(i = 0;i<3;i++) if(f[n][i]) {            printf("%d\n",i);break;        }    }    return 0;}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 喜欢咬指甲的人怎么办? 成年了还咬指甲怎么办 戒奶乳房有硬块怎么办 戒奶七天有硬块怎么办 两岁宝宝喘气粗怎么办 两岁宝宝断不了奶怎么办 两岁宝宝不愿意喝奶粉怎么办 吃母乳不愿意吃奶粉怎么办 母乳宝宝不愿意喝奶粉怎么办 宝宝断母乳不喝奶粉怎么办 9个月宝宝不会爬怎么办 孩子五年级学习成绩差该怎么办 孩子临近中考学习成绩很差该怎么办 初中生成绩不好家长该怎么办 成绩差该怎么办贴吧 宝宝只会匍匐爬怎么办 一年级的孩子数学不好怎么办 小学一年级孩子数学不好怎么办 孩子上一年级数学太差怎么办 智商低情商也低怎么办? 孩子字写得很大怎么办 孩子拿笔重 写字太黑 怎么办 孩子语文成绩好数学不行怎么办? 孩子现在二年级特别叛逆怎么办 孩子又笨又蠢怎么办 四年级孩子数学计算能力差怎么办 孩子四年级数学理解能力差怎么办 孩子小学四年级数学很差怎么办 孩子做作业太慢怎么办 小学三年级数学成绩差怎么办 初一数学考了3分怎么办 初二物理太差该怎么办 三年级孩子字写的差怎么办 小学三年级数学才考86怎么办 小孩子一发脾气就打妈妈怎么办 孩子做错事不肯道歉怎么办 小孩写作业注意力不集中怎么办 六年级的数学下册差怎么办 一年级小孩做作业慢怎么办 静不下心写作业怎么办 二年级应用题太差怎么办