日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Starry Night [USACO]

發布時間:2025/4/16 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Starry Night [USACO] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這道題目也比較簡單,先想好怎么寫,稍微寫寫偽代碼,之后實現了即可。

?

/* ID: zhangyc1 LANG: C++ TASK: starry */ #include <string> #include <cstring> #include <cstdlib> #include <cstdio> using namespace std;struct SStar {int nStarNum, nLeft, nRight, nTop, nBottom;bool arrIsStar[100][100];SStar():nStarNum(1), nLeft(0), nTop(0), nRight(100), nBottom(100){memset(arrIsStar, 0, sizeof(arrIsStar));} }; SStar arrStar[27]; bool arrVisited[100][100]; char arrChMap[100][101], arrSkyMap[100][101]; int H, W; int nCurStarIdx = 0; int arrDirectionY[8] = {0, 1, 1, 1, 0, -1, -1, -1}; int arrDirectionX[8] = {-1, -1, 0, 1, 1, 1, 0, -1};// 上-右上-右-右下-下-左下-左-左上 void GenStar(int x, int y);void prepairData() {scanf("%d%d", &W, &H);for (int i = 0; i < H; i++){scanf("%s", arrSkyMap[i]);memset(arrChMap[i], '0', W);arrChMap[i][W] = '\0';} }void process() {for (int i = 0; i < H; i++){for (int j = 0; j < W; j++){if (!arrVisited[i][j] && arrSkyMap[i][j] == '1'){GenStar(i, j);}}}for (int i = 0; i < H; i++){printf("%s\n", arrChMap[i]);} }int main(){freopen("starry.in","r",stdin);freopen("starry.out","w",stdout);prepairData();process();return 0; }void dfs(int x, int y) {//printf("X = %d,Y = %d\n", x, y);arrStar[nCurStarIdx].nStarNum++;arrStar[nCurStarIdx].arrIsStar[x][y] = true;arrVisited[x][y] = true;if (x < arrStar[nCurStarIdx].nTop)arrStar[nCurStarIdx].nTop = x;if (y < arrStar[nCurStarIdx].nLeft)arrStar[nCurStarIdx].nLeft = y;if (y > arrStar[nCurStarIdx].nRight)arrStar[nCurStarIdx].nRight = y;if (x > arrStar[nCurStarIdx].nBottom)arrStar[nCurStarIdx].nBottom = x;// 判斷8個方向for (int i = 0; i < 8; i++){int newX = x + arrDirectionX[i], newY = y + arrDirectionY[i];if (newX >= 0 && newX < H && newY >= 0 && newY < W && !arrVisited[newX][newY] && arrSkyMap[newX][newY] == '1')dfs(newX, newY);} }bool CompareStar(int nStar1, int nStar2) {if (arrStar[nStar1].nStarNum != arrStar[nStar2].nStarNum)return false;if (arrStar[nStar1].nRight - arrStar[nStar1].nLeft == arrStar[nStar2].nBottom - arrStar[nStar2].nTop&& arrStar[nStar1].nBottom - arrStar[nStar1].nTop == arrStar[nStar2].nRight - arrStar[nStar2].nLeft){bool bEqual = true;// 右旋90for (int i = arrStar[nStar1].nLeft; i <= arrStar[nStar1].nRight && bEqual; i++){// 每列變為行int nLineRe = i - arrStar[nStar1].nLeft + arrStar[nStar2].nTop;for (int j = arrStar[nStar1].nBottom; j >= arrStar[nStar1].nTop; j--){int nColRe = arrStar[nStar1].nBottom - j + arrStar[nStar2].nLeft;if (arrStar[nStar1].arrIsStar[j][i] != arrStar[nStar2].arrIsStar[nLineRe][nColRe]){bEqual = false;break;}}}if (bEqual)return true;bEqual = true;// 右旋270for (int i = arrStar[nStar1].nRight; i >= arrStar[nStar1].nLeft && bEqual; i--){// 每列變為行int nLineRe = arrStar[nStar1].nRight - i + arrStar[nStar2].nTop;for (int j = arrStar[nStar1].nTop; j <= arrStar[nStar1].nBottom; j++){int nColRe = j - arrStar[nStar1].nTop + arrStar[nStar2].nLeft;if (arrStar[nStar1].arrIsStar[j][i] != arrStar[nStar2].arrIsStar[nLineRe][nColRe]){bEqual = false;break;}}}if (bEqual)return true;bEqual = true;// 右旋90 并左右互換for (int i = arrStar[nStar1].nLeft; i <= arrStar[nStar1].nRight && bEqual; i++){// 每列變為行int nLineRe = i - arrStar[nStar1].nLeft + arrStar[nStar2].nTop;for (int j = arrStar[nStar1].nBottom; j >= arrStar[nStar1].nTop; j--){int nColRe = arrStar[nStar2].nRight - arrStar[nStar1].nBottom + j;if (arrStar[nStar1].arrIsStar[j][i] != arrStar[nStar2].arrIsStar[nLineRe][nColRe]){bEqual = false;break;}}}if (bEqual)return true;bEqual = true;// 右旋270 并左右互換for (int i = arrStar[nStar1].nRight; i >= arrStar[nStar1].nLeft && bEqual; i--){// 每列變為行int nLineRe = arrStar[nStar1].nRight - i + arrStar[nStar2].nTop;for (int j = arrStar[nStar1].nTop; j <= arrStar[nStar1].nBottom; j++){int nColRe = arrStar[nStar2].nRight - j + arrStar[nStar1].nTop;if (arrStar[nStar1].arrIsStar[j][i] != arrStar[nStar2].arrIsStar[nLineRe][nColRe]){bEqual = false;break;}}}if (bEqual)return true;}if (arrStar[nStar1].nRight - arrStar[nStar1].nLeft == arrStar[nStar2].nRight - arrStar[nStar2].nLeft&& arrStar[nStar1].nBottom - arrStar[nStar1].nTop == arrStar[nStar2].nBottom - arrStar[nStar2].nTop){bool bEqual = true;// 原狀for (int i = arrStar[nStar1].nTop; i <= arrStar[nStar1].nBottom && bEqual; i++){int nLineRe = i - arrStar[nStar1].nTop + arrStar[nStar2].nTop;for (int j = arrStar[nStar1].nLeft; j <= arrStar[nStar1].nRight; j++){int nColRe = j - arrStar[nStar1].nLeft + arrStar[nStar2].nLeft;if (arrStar[nStar1].arrIsStar[i][j] != arrStar[nStar2].arrIsStar[nLineRe][nColRe]){bEqual = false;break;}}}if (bEqual)return true;bEqual = true;// 左右互換for (int i = arrStar[nStar1].nTop; i <= arrStar[nStar1].nBottom && bEqual; i++){int nLineRe = i - arrStar[nStar1].nTop + arrStar[nStar2].nTop;for (int j = arrStar[nStar1].nLeft; j <= arrStar[nStar1].nRight; j++){int nColRe = arrStar[nStar2].nRight - j + arrStar[nStar1].nLeft;if (arrStar[nStar1].arrIsStar[i][j] != arrStar[nStar2].arrIsStar[nLineRe][nColRe]){bEqual = false;break;}}}if (bEqual)return true;bEqual = true;// 上下互換for (int i = arrStar[nStar1].nTop; i <= arrStar[nStar1].nBottom && bEqual; i++){int nLineRe = arrStar[nStar2].nBottom - i + arrStar[nStar1].nTop;for (int j = arrStar[nStar1].nLeft; j <= arrStar[nStar1].nRight; j++){int nColRe = j - arrStar[nStar1].nLeft + arrStar[nStar2].nLeft;if (arrStar[nStar1].arrIsStar[i][j] != arrStar[nStar2].arrIsStar[nLineRe][nColRe]){bEqual = false;break;}}}if (bEqual)return true;bEqual = true;// 上下+左右互換for (int i = arrStar[nStar1].nTop; i <= arrStar[nStar1].nBottom && bEqual; i++){int nLineRe = arrStar[nStar2].nBottom - i + arrStar[nStar1].nTop;for (int j = arrStar[nStar1].nLeft; j <= arrStar[nStar1].nRight; j++){int nColRe = arrStar[nStar2].nRight - j + arrStar[nStar1].nLeft;if (arrStar[nStar1].arrIsStar[i][j] != arrStar[nStar2].arrIsStar[nLineRe][nColRe]){bEqual = false;break;}}}if (bEqual)return true;}return false; }int FindSimilar() {for (int i = 0; i < nCurStarIdx; i++){bool bSimilar = CompareStar(i, nCurStarIdx);if (bSimilar)return i;}return -1; }void MarkStar(int i, char ch) {for (int m = arrStar[i].nTop; m <= arrStar[i].nBottom; m++){for (int n = arrStar[i].nLeft; n <= arrStar[i].nRight; n++){if (arrStar[i].arrIsStar[m][n])arrChMap[m][n] = ch;}} }void GenStar(int x, int y) {arrStar[nCurStarIdx].nLeft = arrStar[nCurStarIdx].nTop = 100, arrStar[nCurStarIdx].nRight = arrStar[nCurStarIdx].nBottom = arrStar[nCurStarIdx].nStarNum = 0;memset(arrStar[nCurStarIdx].arrIsStar, 0, sizeof(arrStar[nCurStarIdx].arrIsStar));dfs(x, y);// 從0 -- nCurStarIdx 查找此星圖,如未找到則記錄此次星圖int nFindRs = FindSimilar();if (nFindRs >= 0){MarkStar(nCurStarIdx, 'a' + nFindRs);}else{MarkStar(nCurStarIdx, 'a' + nCurStarIdx);nCurStarIdx++;} }

?

轉載于:https://www.cnblogs.com/doublemystery/archive/2013/04/19/3030415.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Starry Night [USACO]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本高清视频在线 | 性欧美xxxx | 国产一线av | 国产精品视频免费网站 | 高潮毛片无遮挡 | 加勒比综合网 | 色综合色综合网色综合 | 亚洲视屏| 神马久久久久久久久久久 | 免费精品视频在线观看 | 亚洲欧洲精品成人久久奇米网 | 香蕉视频2020| 欧美韩国日本一区 | 中文字幕乱妇无码av在线 | 懂色av一区二区三区免费观看 | 欧美在线一区二区 | 色涩av| 久久精品亚洲精品国产欧美 | 深夜福利视频在线观看 | 亚洲天堂2024 | 国产欧美日韩在线视频 | 国产a免费视频 | 久久综合一区二区三区 | 国产精品调教视频 | 国产热视频 | 糖心av| 日韩在线看片 | 国产乱码精品一区二三赶尸艳谈 | 99精品乱码国产在线观看 | 色爽爽一区二区三区 | 国产成人精品免费视频 | 一级特级片 | 无码人妻精品一区二区三区66 | 超碰91人人| 精品福利电影 | 久草影视网 | 欧美挤奶吃奶水xxxxx | 亚洲午夜精品福利 | 成人免费网站黄 | 国产午夜av | 久久久久久久人妻无码中文字幕爆 | 日日夜夜综合网 | 韩国美女视频在线观看18 | 乱老熟女一区二区三区 | 99免费精品视频 | 久久久久亚洲av无码专区首jn | 亚洲欧美国产一区二区三区 | 麻豆视频免费在线观看 | 久久久国产高清 | 乱视频在线观看 | 青青草青娱乐 | 草草在线观看 | 亚洲一区二区中文 | 欧美又粗又长 | 北条麻妃二三区 | 亚洲精品综合在线 | 欧美性大战久久久久久久蜜桃 | 色呦呦一区二区 | 国产乱码精品1区2区3区 | 正在播放木下凛凛88av | 欧美激情另类 | 国产av电影一区二区 | 操人视频在线观看 | 国产制服丝袜 | 国产精品久久久久久 | 最新国产网站 | 亚洲中文字幕在线一区 | 999av视频 | 国产成人久久 | 日本成人一二三区 | 91精品欧美一区二区三区 | 国产性―交一乱―色―情人 | 亚洲综合情 | 亚洲精品国产精品国自产在线 | 综合视频在线观看 | 亚洲欧美日本一区二区 | 成人音影| 欧美另类激情 | av手机在线| 免费福利小视频 | www..99热 | 久啪视频 | 美女光屁屁露胸胸 | 黄色特级片 | 污网在线观看 | 免费不卡av在线 | 姝姝窝人体www聚色窝 | 99热这里只| 色香影视| 精品国产自在精品国产精小说 | av网址导航| 成人a视频在线观看 | 福利视频三区 | 国产一级高清视频 | 国产精品v欧美精品v日韩 | 久久国产视频一区 | 精品人妻av一区二区 | 麻豆国产在线视频 | h片在线 |