中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

地圖四著色問題

發布時間:2020-06-21 03:08:10 來源:網絡 閱讀:1466 作者:qmkkd 欄目:編程語言

一、介紹

    對地圖的著色問題,能否用四個顏色對地圖著色,要求每個相鄰的區域都要著上不同的顏色。


二、算法思路

例如中國的省份為例,從一個省開始,給它涂上任意一種顏色1,遍歷它旁邊的省份,涂上與已經涂色并于他相鄰的省份不同的顏色就行了。

遞歸求解;在前面的n-1個節點都合法的著色之后,開始對第n個節點著色。這時候枚舉可用的4個顏色(4著色),通過和與它相鄰的節點的顏色相比較,來判斷這個顏色是否合法。找到一種顏色能使第n個節點合法著色即可完成中國地圖4著色。


三、代碼

#include <stdio.h>
//N=number of city + 1
#define N 8

int isOk(int metrix[N][N],int city[N],int current)
{
    for(int j=0; j<current; j++)
        if(metrix[current][j]==1&&city[j]==city[current])
            return 0;
    return 1;
}

void color(int metrix[N][N],int city[N],int sum,int current)
{
    if(current<=sum)
        for(int i=1; i<=4; i++)     //colored current city
        {
            city[current]=i;
            if(isOk(metrix,city,current))
            {
                color(metrix,city,sum,current+1);   //colored next city
                break;
            }
        }
}

int main()
{
    int city[N]= {0};
    int metrix[N][N]=  {
                        {0,1,1,0,0,0,0},
                        {1,0,0,1,0,1,0},
                        {1,0,0,1,1,0,0},
                        {0,1,1,0,1,1,0},
                        {0,0,1,1,0,1,1},
                        {0,1,0,1,1,0,1},
                        {0,0,0,0,1,1,0}
                       };
    printf("總共有%d個城市\n",N-1);
    color(metrix,city,N-1,0);
    printf("\n著色方法:\n");
    for(int i=0; i<N-1; i++)
        printf("%3d",city[i]);
    return 0;
}


四、總結

    這個代碼有點簡單,因為是事先輸入了城市之間的關系。如果從實際角度考慮,應該要手動收入然后輸出。最好還能夠用圖形化界面顯示著×××況。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安义县| 古田县| 河西区| 云南省| 兰西县| 葫芦岛市| 泸州市| 乐昌市| 东兴市| 隆回县| 永定县| 房产| 武隆县| 大宁县| 潼关县| 建宁县| 临泽县| 山西省| 涡阳县| 荔波县| 丰台区| 洛阳市| 商水县| 中江县| 礼泉县| 科技| 紫云| 牡丹江市| 新野县| 舟山市| 东阿县| 漳州市| 湖南省| 齐齐哈尔市| 溧阳市| 兴和县| 长丰县| 嘉善县| 平谷区| 仁寿县| 山阴县|