試題描述:
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、共青城ssl等。為超過千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的共青城網(wǎng)站制作公司一個球場C的球迷看臺可容納M*N個球迷。官方想統(tǒng)計一共有多少球迷群體,大的球迷群體有多少人。
球迷選座特性:同球迷群體會選擇相鄰座位,不同球迷群體選擇不相鄰的座位。(相鄰包括前后相鄰、左右相鄰、斜對角相鄰);
給定一個M*N的二維球場,0代表該位置沒人,1代表該位置有人,希望輸出球隊群體個數(shù)P,大的球隊群體人數(shù)Q。
輸入:
第一行,2個數(shù)字,M、N,使用英文逗號隔開。
接下來M行,每行N個數(shù)字,使用英文逗號隔開。
輸出:
一行,2數(shù)字,P和Q。
輸入樣例:
10,10
0,0,0,0,0,0,0,0,0,0
0,0,0,1,1,0,1,0,0,0
0,1,0,0,0,0,0,1,0,1
1,0,0,0,0,0,0,0,1,1
0,0,0,1,1,1,0,0,0,1
0,0,0,0,0,0,1,0,1,1
0,1,1,0,0,0,0,0,0,0
0,0,0,1,0,1,0,0,0,0
0,0,1,0,0,1,0,0,0,0
0,1,0,0,0,0,0,0,0,0
輸出樣例:
6,8
其他:
對于100%的數(shù)據(jù),1<=M,N<=3e3。
這道題是一道明顯的深度優(yōu)先搜索,而且十分簡單。
但是在看到輸入示例后會發(fā)現(xiàn)每個數(shù)據(jù)的后面都存在著一個字符,而且回車也屬于字符。
所以我們要先對數(shù)據(jù)進行處理。
我們需要使用的的輔助工具就是getchar()了,不知道的人可以把getchar()作為一個爪子,每當(dāng)一個char類型的字符被輸入后,getchar()就可以準確的捕捉到他。
但是getchar()是會忽略每行第一個字符的。
所以我們可以定義一個數(shù)組,在取完第一個數(shù)后再使用getchar()。就可以把所有的0和1存儲在一個n*m的二維數(shù)組中了。
再說dfs,就十分簡單了,只需要判斷可能走的8個方向,再使用一個計數(shù)器計數(shù)就可以了。
但是為了避免走重復(fù)的路,也是為了避免時間超限。所以我們可以定義一個bool類型的數(shù)組,記錄走過的路。
同時在主函數(shù)中做寫一個兩層的嵌套循環(huán),找到每個1,再進行dfs。
也要注意使用scanf和printf。
在最后也需要使用一個putchar(),相當(dāng)于是輸出一個字符。
論速度那個快 putchar(),getchar>scanf,printf>cin,cout。
#include#include #include #include #include using namespace std; int n,m,l,k,sum,ans,cnt; char a[4000][4000],op; bool b[4000][4000]={0}; int dfs(int x,int y) { if(a[x-1][y]=='1'&&b[x-1][y]==0) { b[x-1][y]=1; dfs(x-1,y); ans++; } if(a[x][y+1]=='1'&&b[x][y+1]==0) { b[x][y+1]=1; dfs(x,y+1); ans++; } if(a[x-1][y+1]=='1'&&b[x-1][y+1]==0) { b[x-1][y+1]=1; dfs(x-1,y+1); ans++; } if(a[x+1][y]=='1'&&b[x+1][y]==0) { b[x+1][y]=1; dfs(x+1,y); ans++; } if(a[x][y-1]=='1'&&b[x][y-1]==0) { b[x][y-1]=1; dfs(x,y-1); ans++; } if(a[x+1][y-1]=='1'&&b[x+1][y-1]==0) { b[x+1][y-1]=1; dfs(x+1,y-1); ans++; } if(a[x+1][y+1]=='1'&&b[x+1][y+1]==0) { b[x+1][y+1]=1; dfs(x+1,y+1); ans++; } if(a[x-1][y-1]=='1'&&b[x-1][y-1]==0) { b[x-1][y-1]=1; dfs(x-1,y-1); ans++; } return ans; } int main() { scanf("%d%c%d",&n,&op,&m); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { getchar(); a[i][j]=getchar(); } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { ans=0; if(a[i][j]=='0')b[i][j]=1; if(a[i][j]=='1'&&b[i][j]==0) { sum++; cnt=max(cnt,dfs(i,j)); } } } char p=','; printf("%d",sum); putchar(p); printf("%d",cnt); }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。