hdoj 1004 学习思路
hdoj 1004題目大概講的是,將輸入的字符串根據(jù)輸入次數(shù)多少,輸出出現(xiàn)次數(shù)最多的字符串。
題目邏輯很簡單,就是需要選擇相應(yīng)的數(shù)據(jù)結(jié)構(gòu),看了別人提交的discuss,明顯發(fā)現(xiàn)可以使用多種數(shù)據(jù)結(jié)構(gòu)解這道題。
其實我本是打算用結(jié)構(gòu)體來解的,但是結(jié)構(gòu)體還是不太熟,并又看了別人的代碼就不在自行考慮了。
關(guān)鍵是用兩個數(shù)組,一個是 char boloon[1000][16] ,另一個是 int num[1000] ,?
取1000是因為輸入要求N(0<N ≤ 1000), 16 是因為輸入字符串大小在0~15,再加上\0,總共16.
?
在運行程序時,將寫入的字符串存入 boloon[i], 相應(yīng)的s[i] 加一,然后將此次輸入的字符串與之前已經(jīng)存入所有字符穿相比,出現(xiàn)過相同的一次就將num[i]加一,
?
最后求出最大的num[i]的最大的i, 出現(xiàn)次數(shù)最多的就是 boloon[i]
參考代碼
http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=25780&messageid=1&deep=0
我的代碼
#include <stdlib.h> #include <stdio.h> #include <string.h>int main(void) {int i, n, j, max, num[1000];char boloon[1000][16];while (scanf("%d", &n) != EOF){if (n) {for (i = 0; i < n; i++) {num[i] = 0;scanf("%s", boloon[i]);num[i] += 1;for (j = 0; j < i; j++) {if (strcmp(boloon[i], boloon[j]) == 0) {num[i] += 1;}}}max = 0;for (i = 0; i < n; i++) {if (max < num[i]) {max = num[i];j = i;}}printf("%s\n", boloon[j]);}} }?
轉(zhuǎn)載于:https://www.cnblogs.com/young-ma/p/5728025.html
總結(jié)
以上是生活随笔為你收集整理的hdoj 1004 学习思路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac 使用常见问题汇集
- 下一篇: 解决问题:无法对 System程序集 添