日韩性视频-久久久蜜桃-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]的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 精品视频久久久 | 国产成人精品无码免费看夜聊软件 | 亚洲欧洲日韩国产 | 成人影音在线 | 久久欲 | 奇米影视第四色888 免费观看a毛片 | 国产一区二区高清视频 | 99人妻碰碰碰久久久久禁片 | 亚洲精品人人 | 久久6| 韩国激情呻吟揉捏胸视频 | 久久你懂的 | 天堂最新资源在线 | 久久久久久91 | 成人在线日韩 | 污视频在线 | 天天干狠狠 | 国产成人精品电影 | 毛茸茸毛片 | 日本激情视频在线观看 | 欧美日韩成人在线 | 加勒比综合网 | 亚洲午夜国产 | 国产精品无码影院 | 国产91精品久久久 | 巨乳美女动漫 | 中文字幕网伦射乱中文 | 国产激情一区二区三区四区 | 九九精品在线观看 | 国产成人啪精品 | 亚洲电影中文字幕 | 少女忠诚电影高清免费 | 亚洲欧美日本另类 | 晨勃顶到尿h1v1 | 欧美大肥婆大肥bbbbb | 丰满熟女人妻一区二区三区 | 视频一区二区三区精品 | 日韩一区精品 | 超碰97在线播放 | 天天射综合 | 国产三级视频 | 国产伦精品一区二区三 | 少女逼逼 | 亚洲一区二区三区三州 | 成人91在线观看 | 欧美黄色免费网站 | 91黄色小网站 | 欧美人体视频 | 一区二区三区不卡在线 | 成人美女在线 | 欧美色偷偷 | 精品视频久久久 | 亚洲69| 超碰夜夜| 2021国产在线视频 | 九色av| 国产绿帽刺激高潮对白 | 欧美日韩性生活 | 欧美a免费 | 中文字幕777| 一区二区不卡在线观看 | 日韩极品视频在线观看 | 不卡的免费av | 五月天色网站 | 亚洲男人天堂影院 | 欧美性爱视频久久 | 老熟妇午夜毛片一区二区三区 | 国产三级三级在线观看 | 善良的女朋友在线观看 | 最近最新最好看的2019 | 国产专区一区 | 成人图片小说 | 久久久精品欧美 | 三级视频网站 | 欧美少妇一区二区三区 | 天天色天天综合 | 亚洲国产第一区 | 精品国产99 | 射影院 | 久久精品视频2 | 最黄一级片 | 小早川怜子一区二区三区 | 国产午夜精品久久久久久久久久 | 男女激情大尺度做爰视频 | 91精品久久久久久久久久入口 | 亚洲第一av | 国产资源网站 | 毛片天天看 | 久久久一区二区 | 男插女视频在线观看 | 日本一区二区色 | 91蜜桃传媒精品久久久一区二区 | 免费黄色一级大片 | 伊人影院中文字幕 | 啪啪小视频网站 | 深夜天堂| 国产精品九九视频 | 欧美精品久久久久久 | 毛片的网站 |