/*給定乙個字串,計算字串中數值的個數並求和。其中還包含了負號,若
緊跟負號的是乙個數值,則表示這是乙個負數,若後面跟著的不是數字,則不表
示什麼。
輸入:乙個字串
輸出:數值個數 數值和
列子輸入: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...