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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

P1101 单词方阵

發布時間:2024/9/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P1101 单词方阵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

P1101 單詞方陣
https://www.luogu.org/problemnew/show/P1101

標簽
難度 普及-
時空限制 1000ms / 128MB

提示:收藏到任務計劃后,可在首頁查看。

最新討論
推薦的相關題目
題目描述
給一n \times nn×n的字母方陣,內可能蘊含多個“yizhong”單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 88 個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用*代替,以突出顯示單詞。例如:

輸入:8 輸出:

qyizhong *yizhong gydthkjy gy****** nwidghji n*i***** orbzsfgz o**z**** hhgrhwth h***h*** zzzzzozo z****o** iwdfrgng i*****n* yyyygggg y******g

輸入輸出格式
輸入格式:
第一行輸入一個數nn。(7 \le n \le 1007≤n≤100)。

第二行開始輸入n \times nn×n的字母矩陣。

輸出格式:
突出顯示單詞的n \times nn×n矩陣。

輸入輸出樣例
輸入樣例#1:

7 aaaaaaa aaaaaaa aaaaaaa aaaaaaa aaaaaaa aaaaaaa aaaaaaa

輸出樣例#1:

*************************************************

輸入樣例#2:

8 qyizhong gydthkjy nwidghji orbzsfgz hhgrhwth zzzzzozo iwdfrgng yyyygggg

輸出樣例#2:

*yizhong gy****** n*i***** o**z**** h***h*** z****o** i*****n* y******g

/*
很久之前看過,那時沒有好的想法(那時太菜),今天下午在看一下,頓時感覺好簡單,說明我水平還是有提升~~
*/

#include <bits/stdc++.h> using namespace std; struct point {int x;int y;point(){}point(int xx,int yy):x(xx),y(yy) {} }a[10]; int step[8][2]= {-1,0,1,0,0,-1,0,1,-1,-1,-1,1,1,-1,1,1 }; queue<point>q; char mp[105][105]; int value[105][105]; int n; const char *s = "yizhong"; bool check(int xx,int yy,int cnt) {if(cnt >= 7)return false;if(xx < 0 || xx >= n || yy < 0 || yy >= n)return false;if(mp[xx][yy] != s[cnt])return false;return true; } void DFS(int sx,int sy,int cnt) {for(int i = 0; i < 8; i++){int xx = sx + step[i][0];int yy = sy + step[i][1];while(check(xx,yy,cnt)){a[cnt++] = point(xx,yy);if(cnt == 7)break;xx = xx + step[i][0];yy = yy + step[i][1];}if(cnt == 7){value[sx][sy]++;for(int i = 1; i < cnt; i++){int tx = a[i].x,ty = a[i].y;value[tx][ty]++;}}cnt = 1;}} int main() {cin>>n;for(int i = 0; i < n; i++){cin>>mp[i];for(int j = 0; j < n; j++){if(mp[i][j] == 'y'){q.push(point(i,j));}}}while(!q.empty()){point s = q.front();q.pop();DFS(s.x,s.y,1);}for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){if(value[i][j]){cout<<mp[i][j];}else{cout<<'*';}}cout<<endl;}return 0; }

總結

以上是生活随笔為你收集整理的P1101 单词方阵的全部內容,希望文章能夠幫你解決所遇到的問題。

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