C 實現球迷 今日頭條面試題

2022-10-04 00:15:30 字數 1933 閱讀 9425

試題描述:

乙個球場c的球迷看台可容納m*n個球迷。官方想統計一共有多少球迷群體,最大的球迷群體有多少人。

球迷選座特性:同球迷群體會選擇相鄰座位,不同球迷群體選擇不相鄰的座位。(相鄰包括前後相鄰、左右相鄰、斜對角相鄰);

給定乙個m*n的二維球場,0代表該位置沒人,1代表該位置有人,希望輸出球隊群體個數p,最大的球隊群體人數q。

輸入:第一行,2個數字,m、n,使用英文逗號隔開。

接下來行,每行n個數字,使用英文逗號隔開。

輸出:一行,2數字,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%的資料,1<=m,n<=3e3。

這道題是一道明顯的深度優先搜尋,而且十分簡單。

但是在看到輸入示例後會發現每個資料的後面都存在著乙個字元,而且回車也屬於字元。

所以我們要先對資料進行處理。

我們需要使用的的輔助工具就是getchar()了,不知道的人可以把getchar()作為乙個爪子,每當乙個char型別的字元被輸入後,getchar()就可以準確的捕捉到他。

但是getchar()是會忽略每行第乙個字元的。

所以我們可以定義乙個陣列,在取完第乙個數後再使用getchar()。就可以把所有的0和1儲存在乙個n*m的二維陣列中了。

再說dfs,就十分簡單了,只需要判斷可能走的8個方向,再使用乙個計數器計數就可以了。

但是為了避免走重複的路,也是為了避免時間超限。所以我們可以定義乙個bool型別的陣列,記錄走過的路。

同時在主函式中做寫乙個兩層的巢狀迴圈,找到每個1,再進行dfs。

也要注意使用scanf和printf。

在最後也需要使用乙個putchar(),相當於是輸出乙個字元。

論速度那個快       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]=;

int dfs(int x,int y)

if(a[x][y+1]=='1'&&b[x][y+1]==0)

if(a[x-1][y+1]=='1'&&b[x-1][y+1]==0)

if(a[x+1][y]=='1'&&b[x+1][y]==0)

if(a[x][y-1]=='1'&&b[x][y-1]==0)

if(a[x+1][y-1]=='1'&&b[x+1][y-1]==0)

if(a[x+程式設計客棧1][y+1]=='1'&&b[x+1][y+1]==0)

if(a[x-1][y-1]=='1'&&b[x-1][y-1]==0)

return ans;

}in main()

} for(int i=1;i<=n;i++)

}} char p=',';

printf("%d",sum);

putchar(p);

printf("%d",cnt);}總結

本文標題: c++ 實現球迷 今日頭條面試題

本文位址:

c 病句 今日頭條面試題

試題描述 為了提高文章質量,每一篇文章 假設全部都是英文 都會有m名編輯審核,每個編輯獨立工作,會把覺得有問題的句子通過下標記錄下來,比如 1,10 1表示病句的第乙個字元,10表示病句的最後乙個字元。也就是從1到10個字元組成的句子,是有問題的。現在需要把多名編輯有問題的句子合併起來,送給總編輯進...

今日頭條面試題 基礎練習

都是基礎題目,也起來也挺繞的 作為乙個手串藝人,有金主向你訂購了一條包含n個雜色串珠的手串 每個串珠要麼無色,要麼塗了若干種顏色。為了使手串的色彩看起來不那麼單調,金主要求,手串上的任意一種顏色 不包含無色 在任意連續的m個串珠裡至多出現一次 注意這裡手串是乙個環形 手串上的顏色一共有c種。現在按順...

今日頭條async await面試題執行順序

async function async1 async function async2 console.log script start settimeout function 0 async1 new promise function resolve then function console.l...