欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

uva 10051 Tower of Cubes(DAG最長路)

系統(tǒng) 2332 0

題目連接:10051 - Tower of Cubes


題目大意:有n個(gè)正方體,從序號1~n, 對應(yīng)的每個(gè)立方體的6個(gè)面分別有它的顏色(用數(shù)字給出),現(xiàn)在想要將立方體堆成塔,并且上面的立方體的序號要小于下面立方體的序號,相鄰的面顏色必須相同。輸出最高值和路徑。


解題思路:因?yàn)榱⒎襟w可以旋轉(zhuǎn),所以一個(gè)序號的立方體對應(yīng)這6種不同的擺放方式,可以將問題理解成DAG最長路問題, 只是搜索范圍是從i + 1開始到n。然后記錄路徑要開兩個(gè)2維數(shù)組。


路徑不唯一,隨便輸出一條。


?

    #include <stdio.h>

#include <string.h>

const int N = 1005;

const int M = 10;

const char sign[M][10]= {"front", "back", "left", "right", "top", "bottom"};



struct state {

    int in;

    int out;

}tmp[N][M];

int n, x[N][M], y[N][M], dp[N][M];



void Init() {

    memset(tmp, 0, sizeof(tmp));

    memset(dp, 0, sizeof(dp));

    memset(x, 0, sizeof(x));

    memset(y, 0, sizeof(y));

}



void write(int k, int a, int b, int d) {

    tmp[d][k].in = a;

    tmp[d][k].out = b;

}



void read() {

    int a, b;

    for (int i = 1; i <= n; i++) {

	for (int j = 0; j < 3; j++) {

	    scanf("%d%d", &a, &b);

	    write(j * 2, a, b, i);

	    write(j * 2 + 1, b, a, i);

	}

    }

}



int search(int d, int k) {

    if (dp[d][k])	return dp[d][k];



    for (int i = d + 1; i <= n; i++) {

	for (int j = 0; j < 6; j++) {

	    if (tmp[i][j].in == tmp[d][k].out) {

		int a = search(i, j);

		if (a > dp[d][k]) {

		    dp[d][k] = a;

		    x[d][k] = i, y[d][k] = j;

		}

	    }

	}

    }

    return ++dp[d][k];

}



void solve() {

    int Max = 0, idx, idy, a;

    for (int i = 1; i <= n; i++) {

	

	if (Max + i >= n)   break;



	for (int j = 0; j < 6; j++) {

	    a = search(i, j);

	    if (a > Max) {

		Max = a;

		idx = i, idy = j;

	    }

	}

    }

    printf("%d\n", Max);



    for (int i = 0; i < Max; i++) {

	printf("%d %s\n", idx, sign[idy]);

	a = idx;

	idx = x[idx][idy];

	idy = y[a][idy];

    }



    /*

    printf("%d\n", dp[1][5]);

    idx = 1; idy = 5;

    for (int i = 0; idx; i++) {

	printf("%d %s\n", idx, sign[idy]);

	a = idx;

	idx = x[idx][idy];

	idy = y[a][idy];

    }

    */

}



int main() {

    int cas = 0;

    while (scanf("%d", &n), n) {

	Init();



	read();



	if (cas)    printf("\n");



	printf("Case #%d\n", ++cas);



	solve();

    }

    return 0;

}


  


?

?

uva 10051 Tower of Cubes(DAG最長路)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲一区二区在线播放 | 欧美成人在线免费观看 | 亚在线 | 成人羞羞网站 | 国产亚洲视频免费播放 | 亚洲综合色一区二区三区另类 | 色综合成人 | 精品免费在线视频 | 啪啪免费网站 | 国产色婷婷亚洲99精品小说 | 成人国产欧美精品一区二区 | 欧美乱码伦视频免费 | 国产欧美在线观看视频 | 国产亚洲蜜芽精品久久 | 天堂av中文字幕 | 欧美日一区二区 | 黑人精品欧美一区二区蜜桃 | 中文字幕视频在线 | 成年人在线看片 | 久久宗合色 | 日韩国产欧美视频 | av免费观看网站 | 在线播放av片 | 国产成人精品一区二区三区视频 | a级粗大硬长爽猛视频免费 潘金莲强完整版 | 手机av在线| 久久网精品视频 | 欧美黄色xxx | 成人v| 尤物国产在线精品福利一区 | 中文字幕 欧美 日韩 | 国产一区www | 久草影视网 | 欧美成人黑人视频免费观看 | 国产精品怕怕怕视频免费 | 国产碰碰 | 天天草天天干天天 | 成人精品视频在线观看 | 又爽又黄又无遮挡的激情视频免费 | 久久久久久成人精品 | 一区二区三区高清视频在线观看 |