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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

两点(51nod 深搜)

發布時間:2023/12/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 两点(51nod 深搜) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

福克斯在玩一款手機解迷游戲,這個游戲叫做”兩點”。基礎級別的時候是在一個n×m單元上玩的。像這樣:

每一個單元有包含一個有色點。我們將用不同的大寫字母來表示不同的顏色。

這個游戲的關鍵是要找出一個包含同一顏色的環。看上圖中4個藍點,形成了一個環。一般的,我們將一個序列 d1,d2,…,dk 看成一個環,當且僅當它符合下列條件時:

  • 這k個點不一樣,即當 i≠j時, di 和 dj不同。

  • k至少是4。

  • 所有的點是同一種顏色。

  • 對于所有的 1≤i≤k-1: di 和 di+1 是相鄰的。還有 dk 和 d1 也應該相鄰。單元 x 和單元 y 是相鄰的當且僅當他們有公共邊。

  • 當給出一幅格點時,請確定里面是否有環。

    Input
    單組測試數據。
    第一行包含兩個整數n和m (2≤n,m≤50):板子的行和列。
    接下來n行,每行包含一個有m個字母的串,表示當前行每一個點的顏色。每一個字母都是大寫字母。
    Output
    如果有環輸出Yes,否則輸出No。
    Sample Input
    3 4
    AAAA
    ABCA
    AAAA
    3 4
    AAAA
    ABCA
    AADA
    Sample Output
    Yes
    No
    深搜題目,想明白就好了。在搜索的過程中,不能往回搜索,搜過的就標記為1,當搜索的過程中遇見1就返回yes,否則就返回no。
    代碼如下:

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std;int d[][2]={{1,0},{0,1},{-1,0},{0,-1}}; char a[51][51]; int n,m; int flag=0; int vis[51][51];void dfs(int x,int y,int xx,int yy) {for(int i=0;i<4;i++){if(xx==-d[i][0]&&yy==-d[i][1]) continue;int tx=x+d[i][0];int ty=y+d[i][1];if(tx<0||tx==n||ty<0||ty==m||a[tx][ty]!=a[x][y]) continue;if(vis[tx][ty]) {flag=1;return ;}vis[tx][ty]=1;dfs(tx,ty,d[i][0],d[i][1]);if(flag) return ;} } int main() {while(scanf("%d%d",&n,&m)!=EOF){flag=0;memset(vis,0,sizeof(vis));for(int i=0;i<n;i++)scanf("%s",a[i]);for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(!vis[i][j]){dfs(i,j,0,0);if(flag) break;}}if(flag) break;}if(flag) printf("Yes\n");else printf("No\n");} }

    努力加油a啊,(o)/~

    總結

    以上是生活随笔為你收集整理的两点(51nod 深搜)的全部內容,希望文章能夠幫你解決所遇到的問題。

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