洛谷 P1101 單詞方陣

給一n×n的字母方陣,內可能蘊含多個“yizhong”單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 8個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用*代替,以突出顯示單詞。例如:

?

輸入:8                    輸出:qyizhong            *yizhonggydthkjy            gy******nwidghji            n*i*****orbzsfgz            o**z****hhgrhwth            h***h***zzzzzozo            z****o**iwdfrgng            i*****n*yyyygggg            y******g

?

輸入輸出格式

輸入格式:

第一行輸入一個數n。(7≤n≤100)。

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

輸出格式:

突出顯示單詞的n×n矩陣。

輸入輸出樣例

輸入樣例1:

7
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
輸出樣例:

*******
*******
*******
*******
*******
*******
*******
輸入樣例2:

8
qyizhong
gydthkjy
nwidghji
orbzsfgz
hhgrhwth
zzzzzozo
iwdfrgng
yyyygggg

輸出樣例:

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

?

提供兩種解法 一種是dfs 一種是暴力 要是只想把這個題ac掉的話直接往下看暴力法就好了 想練一練dfs的可以好好看看解法一

解法一(dfs):

?

#include<bits/stdc++.h>using namespace std;char m[105][105],a[]="yizhong",ans[105][105];
int n,f[2][8]={1,1,1,0,0,-1,-1,-1,1,0,-1,1,-1,1,0,-1};void dfs(int x,int y,int k,int p)  //x y 為當前坐標 k代表朝哪個方向搜 p代表是這個方向上的第幾個字母
{int i;if(p==6) {for(i=p;i>=0;i--)ans[x-i*f[0][k]][y-i*f[1][k]]=a[6-i];    //我用ans數組保存要輸出的“地圖”,如果有符合的字符串就記錄到ans里return;}else if(m[x+f[0][k]][y+f[1][k]]==a[p+1])     dfs(x+f[0][k],y+f[1][k],k,p+1);          //沿著k方向搜 由于不會轉向別的方向 所以不需要vis數組判斷是否已經經過這個點 這是和其他的dfs區別最大的地方else return;    
}int main()
{int i,j,k;cin>>n;for(i=0;i<n;i++)cin>>m[i];for(i=0;i<n;i++)for(j=0;j<n;j++)ans[i][j]='*';     //對ans數組初始化 全部設為“*”for(i=0;i<n;i++)for(j=0;j<n;j++){if(m[i][j]=='y')for(k=0;k<8;k++){dfs(i,j,k,0);}}for(i=0;i<n;i++){for(j=0;j<n;j++)cout<<ans[i][j];cout<<endl;}
}

?

解法二(暴力):

#include<iostream>
#include<cstdio>
using namespace std;
string s[111],ans[111];
const int a[8]={0,-1,-1,-1,0,1,1,1},b[8]={1,1,0,-1,-1,-1,0,1};
int t1,t2,kk,k,i,j,n;
bool bb;
int main()
{cin>>n;for (i=1; i<=n; i++) cin>>s[i];for (i=1; i<=n; i++)for (j=1; j<=n; j++)ans[i]+='0';for (i=1; i<=n; i++)for (j=0; j<=n-1; j++)if (s[i][j]=='y') {for (k=0; k<=7; k++){t1=i;  t2=j;bb=1;for (kk=1; kk<=6; kk++){t1+=a[k]; t2+=b[k];if (t1<1||t1>n||t2<0||t2>n-1) bb=0;if (bb==0) break;if (kk==1&&s[t1][t2]!='i') bb=0;if (kk==2&&s[t1][t2]!='z') bb=0;if (kk==3&&s[t1][t2]!='h') bb=0;if (kk==4&&s[t1][t2]!='o') bb=0;if (kk==5&&s[t1][t2]!='n') bb=0;if (kk==6&&s[t1][t2]!='g') bb=0;} t1=i; t2=j;if (bb) for (kk=0; kk<=6; kk++) ans[t1][t2]=s[t1][t2],t1+=a[k],t2+=b[k];}}for (i=1; i<=n; i++)for (j=0; j<=n-1; j++)if (ans[i][j]=='0') ans[i][j]='*';for (i=1; i<=n; i++)cout<<ans[i]<<endl;return 0;
}

?

解法二是別人的題解 直接拿來用了 可以更優化一點的 不過沒必要了 都可以ac

?

轉載于:https://www.cnblogs.com/dyhaohaoxuexi/p/10617250.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394499.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394499.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394499.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從頭學習計算機網絡_如何從頭開始構建三層神經網絡

從頭學習計算機網絡by Daphne Cornelisse達芙妮康妮莉絲(Daphne Cornelisse) 如何從頭開始構建三層神經網絡 (How to build a three-layer neural network from scratch) In this post, I will go through the steps required for building a three layer neural network. I’…

python 文件處理

f open(chenli.txt) #打開文件 first_line f.readline() print(first line:,first_line) #讀一行 print(我是分隔線.center(50,-)) data f.read() # 讀取剩下的所有內容,文件大時不要用 print(data) #打印讀取內容f.close() #關閉文件1…

第五章 MVC之Bundle詳解

一、簡述 Bundle&#xff0c;英文原意就是捆、收集、歸攏。在MVC中的Bundle技術&#xff0c;也就是一個對css和js文件的捆綁壓縮的技術。 它的用處&#xff1a; 將多個請求捆綁為一個請求&#xff0c;減少服務器請求數 壓縮javascript&#xff0c;css等資源文件&#xff0c;減小…

所給服務器端程序改寫為能夠同時響應多個客戶端連接請求的服務器程序_一文讀懂客戶端請求是如何到達服務器的...

點擊上方“藍色字體”&#xff0c;選擇 “設為星標”關鍵訊息&#xff0c;D1時間送達&#xff01;互聯網是人類歷史上最偉大的發明創造之一&#xff0c;而構成互聯網架構的核心在于TCP/IP協議。那么TCP/IP是如何工作的呢&#xff0c;我們先從數據包開始講起。1、數據包一、HTTP…

消息服務器 推送技術,SSE服務器推送技術

SSE即 server send event 服務器發送事件&#xff0c;在在早期可能會使用ajax向服務器輪詢的方式&#xff0c;使瀏覽器第一時間接受到服務器的消息&#xff0c;但這種頻率不好控制&#xff0c;消耗也比較大。但是對于SSE來說&#xff0c;當客戶端向服務端發送請求&#xff0c;服…

Contest2162 - 2019-3-28 高一noip基礎知識點 測試5 題解版

傳送門 T1 單調棧 按照b排序 在家每一個物品時&#xff0c;判斷一下a和b的關系 如果s[sta[top]].a>s[i].b&#xff0c;就彈棧 記錄所有時候的height&#xff0c;并取最大值 T2 單調棧裸題 單調棧是干什么的&#xff1f;&#xff1f; 單調棧是記錄一個數的一側的第一個比他大…

在package.json里面的script設置環境變量,區分開發及生產環境。注意mac與windows的設置方式不一樣...

在package.json里面的script設置環境變量&#xff0c;區分開發及生產環境。 注意mac與windows的設置方式不一樣。 "scripts": {"publish-mac": "export NODE_ENVprod&&webpack -p --progress --colors","publish-win": "…

leetcode 978. 最長湍流子數組(動態規劃)

978. 最長湍流子數組 當 A 的子數組 A[i], A[i1], …, A[j] 滿足下列條件時&#xff0c;我們稱其為湍流子數組&#xff1a; 若 i < k < j&#xff0c;當 k 為奇數時&#xff0c; A[k] > A[k1]&#xff0c;且當 k 為偶數時&#xff0c;A[k] < A[k1]&#xff1b; 或 …

人工智能取代工作_人工智能正在取代人們的工作-開發人員是下一個嗎?

人工智能取代工作I was recently asked to comment on whether there was any point in becoming a developer right now, because AI might be doing your job very soon.最近有人要求我評論一下現在成為開發人員是否有任何意義&#xff0c;因為AI可能很快就會完成您的工作。 …

python類self_Python類中的self到底是干啥的

Python編寫類的時候&#xff0c;每個函數參數第一個參數都是self&#xff0c;一開始我不管它到底是干嘛的&#xff0c;只知道必須要寫上。后來對Python漸漸熟悉了一點&#xff0c;再回頭看self的概念&#xff0c;似乎有點弄明白了。首先明確的是self只有在類的方法中才會有&…

PHP中關于取模運算及符號

執行程序段<?php echo 8%(-2) ?>&#xff0c;輸出結果是&#xff1a; %為取模運算&#xff0c;以上程序將輸出0 $a%$b,其結果的正負取決于$a的符號。 echo ((-8)%3); //將輸出-2 echo (8%(-3)); //將輸出2轉載于:https://www.cnblogs.com/457248499-qq-com/p…

[pytorch] Pytorch入門

Pytorch入門 簡單容易上手&#xff0c;感覺比keras好理解多了&#xff0c;和mxnet很像&#xff08;似乎mxnet有點借鑒pytorch&#xff09;&#xff0c;記一記。 直接從例子開始學&#xff0c;基礎知識咱已經看了很多論文了。。。 import torch import torch.nn as nn import to…

無線服務器密碼讓別人改了,wifi密碼被改了怎么辦_wifi密碼被別人改了怎么辦?-192路由網...

wifi密碼被別人改了怎么辦&#xff1f;wifi密碼之所以被別人修改&#xff0c;是因為其他人知道了你路由器的登錄密碼。所以&#xff0c;如果發現自己wifi密碼被別人修改了&#xff0c;應該立刻登錄到路由器設置界面&#xff0c;修改路由器登錄密碼、修改wifi密碼、并調整wifi加…

[archlinux][hardware] 查看SSD的使用壽命

因為最近把16GB的SSD做成了HDD的cache&#xff0c;所以比較關系壽命問題。 使用smartctl工具。 參考&#xff1a;https://www.v2ex.com/t/261373 linux 下面只有 smartmontools 這一個工具&#xff0c;而且只對像三喪和 intel 這樣的大廠支持良好&#xff0c;其余的廠家文檔不全…

leetcode174. 地下城游戲(動態規劃)

一些惡魔抓住了公主&#xff08;P&#xff09;并將她關在了地下城的右下角。地下城是由 M x N 個房間組成的二維網格。我們英勇的騎士&#xff08;K&#xff09;最初被安置在左上角的房間里&#xff0c;他必須穿過地下城并通過對抗惡魔來拯救公主。 騎士的初始健康點數為一個正…

如何設置Windows版Go —快速簡便的指南

by Linda Gregier琳達格雷格(Linda Gregier) Another great language to add to your full-stack developer tool belt is the simple and productive general-purpose programming language of Go.添加到您的全棧開發人員工具帶中的另一種很棒的語言是Go的簡單而高效的通用編…

python計算現場得分_淺談用 Python 計算文本 BLEU 分數

淺談用 Python 計算文本 BLEU 分數BLEU, 全稱為 Bilingual Evaluation Understudy(雙語評估替換), 是一個比較候選文本翻譯與其他一個或多個參考翻譯的評價分數盡管 BLEU 一開始是為翻譯工作而開發, 但它也可以被用于評估文本的質量, 這種文本是為一套自然語言處理任務而生成的…

Unity的幾個特殊文件夾

1.以.開頭的文件夾會被unity忽略&#xff0c;資源不會被導入&#xff0c;腳本不會編譯。 2.Standard Assets和Pro Standard Assets&#xff1a;在這個文件夾中的腳本最先被編譯。 3.Editor&#xff1a;以Editor命名的文件夾允許其中的腳本訪問Unity Editor的API。如果腳本中使用…

怎么上傳文件到kk服務器,VS Code 關于SFTP上傳文件到多服務器的配置

工欲善其事&#xff0c;必先利其器&#xff01;剛學前端的時候一直用的DW來編寫代碼&#xff0c;其功能非常強大&#xff0c;但在Linux下不能用&#xff0c;所以就轉VS Code了。但是剛開始使用VS Code的時候&#xff0c;很多DW上的功能需要自己安裝擴展&#xff0c;并配置才可以…

CentOS7 Firewall NAT 及端口映射

本節介紹用CentOS7的Firewalll來做NAT以及端口映射實驗拓撲:因為我的環境里CentOS7上有KVM虛擬機需要共享網卡上網&#xff0c;所以我把網卡都添加到了橋里面&#xff0c;當然這里也可以不用橋&#xff0c;直接用物理網口&#xff1b;用nmcli創建橋&#xff0c;并添加網口到橋&…