【dnf解密源码】【安卓cad源码】【餐厅asp系统源码】涂色本 源码_纯涂色脚本

2024-11-30 00:43:37 来源:源码规范化 分类:综合

1.地着色问题C/C++

涂色本 源码_纯涂色脚本

地着色问题C/C++

       从一个省开始,涂色涂色给它涂上任意一种颜色1,本源遍历它旁边的码纯省份,涂上与已经涂色并于他相邻的脚本dnf解密源码省份不同的颜色就行了。

       理论上4种颜色就够了.地图的涂色涂色四色问题嘛!

       可能会有多组解。用递归(dfs)就可以输出所有解了。本源安卓cad源码

       地图着色算法C语言源代码

        前面我写了一个地图着色(即四色原理)的码纯C源代码。

        写完以后想了一下,脚本感觉还不完善,涂色涂色因为从实际操作的本源角度来考虑,四种可用的码纯颜色放在旁边,不同的脚本人可能会有不同的选择顺序,另外,涂色涂色餐厅asp系统源码不同的本源人可能会选择不同的城市作为着色的起点,而当时的码纯程序没有考虑这个问题。于是网页生成软件源码,把程序修改为下面的样子,还请同行分析并指出代码中的不足之处:

       #i nclude <stdio.h>

       #define N

       int allcolor[4];/*可用的颜色*/

       int ok(int metro[N][N],int r_color[N],int current)

       { /*ok函数和下面的go函数和原来的一样,保留用来比较两种算法*/

        int j;

        for(j=1;j<current;j++)

        if(metro[current][j]==1&&r_color[j]==r_color[current])

        return 0;

        return 1;

       }

       void go(int metro[N][N],int r_color[N],int sum,int current)

       {

        int i;

        if(current<=sum)

        for(i=1;i<=4;i++)

        {

        r_color[current]=i;

        if(ok(metro,r_color,current))

        {

        go(metro,r_color,sum,current+1);

        return;

        }

        }

       }

       void color(int metro[N][N],int r_color[N],int sum,int start)

       {

        int i,j,k;

        r_color[start]=allcolor[0];

        for(i=start+1;i!=start;i=(i+1)%(sum+1))/*把所有编号看作一个环*/

        if(i==0)/*城市号从1开始编号,故跳过0编号*/

        continue;

        else

        for(j=0;j<4;j++)

        {

        r_color[i]=allcolor[j];/*选取下一种颜色,根据allcolor中颜色顺序不同,结果不同*/

        for(k=1;k<i;k++)/*检查是黄金电玩城 源码否有冲突,感觉还可以改进,如使用禁忌搜索法*/

        if(metro[i][k]==1&&r_color[k]==r_color[i])

        break;

        if(k>=i)

        break;

        }

       }

       void main()

       {

        int r_color[N]={ 0};

        int t_color[N]={ 0};

        int i;

        int start;/*着色的起点*/

        int metro[N][N]={ { 0},

        { 0,1,1,1,1,1,1},

        { 0,1,1,1,1},

        { 0,1,1,1,0,0,1},

        { 0,1,1,0,1,1},

        { 0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1},

        { 0,1,0,1,0,1,1,1,1,1},

        { 0,0,0,0,0,0,1,1,1},

        { 0,0,0,0,0,0,1,1,1,1,0,0,1},

        { 0,0,0,0,0,1,1,0,1,1,0,0,1,1,1,0,1},

        { 0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,1,0,0,0,1},

        { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1},

        { 0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,1,1},

        { 0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1},

        { 0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1},

        { 0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,1},

        { 0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1},

        { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1},

        { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1},

        { 0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,1,1,1},

        { 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1}};

        allcolor[0]=1;allcolor[1]=2;allcolor[2]=3;allcolor[3]=4;/*选色顺序,顺序不同,结果不同*/

        start=1;

       /* clrscr();*/

        printf("\nAll color is:\n");

        for(i=0;i<4;i++)/*当前选色顺序*/

        printf("%d ",allcolor[i]);

        go(metro,r_color,,1);

        printf("\nFirst method:\n");

        for(i=1;i<=;i++)

        printf("%3d",r_color[i]);

        color(metro,t_color,,start);

        printf("\nSecond method:\n");

        printf("\nAnd the start metro is:%d\n",start);

        for(i=1;i<=;i++)

        printf("%3d",t_color[i]);

       }

        说是人性化着色,其实还有一个问题没有考虑,那就是操作员跳跃式着色,就像大家玩“扫雷”游戏一样。其实也容易实现,可以像定义选色顺序一样定义着色顺序。

更多资讯请点击:综合

热门资讯

vnc mfc源码

2024-11-30 00:41546人浏览

叶子分时t 指标源码

2024-11-30 00:04410人浏览

print源码分析

2024-11-29 22:582940人浏览

推荐资讯

源码修改方案

1.如何修改node_modules里的文件2.Android Adb 源码分析(一)3.UE5.1卡通渲染管线修改 学习笔记改源码版)4.Elasticsearch7.8.0集成IK分词器改源码实现

纯PHP文件上传源码_纯php文件上传源码是什么

1.怎么用php实现文件的上传,要求文件类型为jpg,大小不超过2m,上传的文件存放在u?怎么用php实现文件的上传,要求文件类型为jpg,大小不超过2m,上传的文件存放在u? $_FILES官方