杭電計算機複試2015筆試題解答

2021-10-05 05:32:06 字數 1767 閱讀 5617

/*給定乙個字串,計算字串中數值的個數並求和。其中還包含了負號,若

緊跟負號的是乙個數值,則表示這是乙個負數,若後面跟著的不是數字,則不表

示什麼。

輸入:乙個字串

輸出:數值個數 數值和

列子輸入:312ab-2-- -9–a

輸出:3 301

*/

//與2023年的試題2類似字串中提取數字並求和 

//可以選擇把乙個數先整體存到陣列中,在轉化為數,str2int

//此題主要是負號的判別,可以通過標誌位實現,另外注意在字元判斷時把負號剔除。

#include#include#include#includeusing namespace std;

int main()

} }

printf("%d %d\n",geshu,sum);

return 0;

}

/*.給定乙個數字矩陣,如果上下左右數值相同,則表示是乙個連通的區域。

求矩陣中連通塊的數量。

輸入:先是矩陣的行數和列數

接著是矩陣

輸出:連通塊的數量

列子:5 6

4 4 4 4 4 4

4 2 3 3 1 4

4 2 2 3 1 4

4 2 3 3 1 4

4 4 4 4 4 4

輸出:4

*///bfs,dfs,並查集應該都可以

#include#includeusing namespace std;

const int maxn=110;

struct nodenode;//位置節點,寫成乙個結構體

int matrix[maxn][maxn];

bool inq[maxn][maxn]=;//標記陣列,記錄某一位置是否入過隊

int n,m;//n行m列

int x[4]=;//增量陣列,因為bfs訪問時是上下左右一圈相鄰的都得訪問

int y[4]=; //設定陣列後就可以用for迴圈來實現,避免列舉四次位置

//用bfs遍歷

/*列舉每個位置的數先記錄當前的數,然後用bfs遍歷與該位置相鄰的四個位置,判斷他們是否與之相等,若想等

則同樣去查詢相鄰的位置並將其做標記,以免走回頭路,所以這裡的標記陣列是二維的,表示某一位置是否被訪問過

*/bool judge(int x,int y,int value)

if(matrix[x][y]!=value || inq[x][y]==true) return false;//已經訪問過的頂點或者不是乙個數值的不在訪問

return true;

} //bfs函式訪問(x,y)所在的位置快等於value的元素,將該塊所有元素inq置為true

void bfs(int x,int y,int value)

} } }

//dfs將同乙個連通塊中的元素做標記

void dfs(int x,int y,int value)

if(matrix[x][y]!=value || inq[x][y]==true) return;已經訪問過的頂點或者不是乙個數值,遞迴邊界返回

for(int i=0;i<4;i++)

} int main() }

int ans=0;//儲存連通塊數

for(int x=0;x} }

printf("%d\n",ans);

return 0;

}

杭電計算機複試2012筆試題目解答

寫乙個程式將十進位制數轉變為十六進製制輸出,每行輸入乙個十進位制數,當輸入數為0,程式結束 includechar wei 16 char hex 20 字元陣列儲存最終結果 逆序輸出 除基取餘倒級聯 int dectohex int n while n 0 return hex wei int m...

杭電計算機複試2014筆試題目解答

1.如果輸入了乙個單詞,直到檢測到空格算是乙個單詞,行的長度不超過80個字元,超過了提前換行,每行的開頭單詞沒有空格 2.如果遇到 則換行3.如果遇到,如果不是在開頭則先換行,再輸出80個 並換行,在開頭的話直接 輸出80個 並換行 4.最後一行以換行符結束 include includeconst...

杭電計算機複試2018筆試題目解答

題目1 杭電實驗室會定期去電影院看電影,按照慣例,每個成員需要先抽乙個號碼。給出n個人的名字,各抽取乙個數字,自己用一種資料結構訪問人的名字和抽取數字資訊 票數 例如 bob 9 alice 12 tom 5 jack 7 nick 4 1.定義一種數叫醜數,其因子除1外只有2.3.5的倍數,例如4...