字串分值和問題分析:
題目
隨機輸入一串字元,列如:ababd;
計算字串分值和為:28;
個人分析:
1、首先我們根據題目可知要找出乙個字串所有組成可能的字串
列入abc可得
2、然後我們取字串第乙個元素,對比後面的剩餘的元素,如果元素第一次出現的話,我們認證它,再出現的話我們將不認證它(解決辦法,我們定義初始26個字母都有0為代號,第一次執行時如果出現重新賦予1代號,以此類推就可以一一表示元素是否重複出現)
3、我們找到字串的最大不同元素個數後,我們可以分析知我們從第乙個元素開始累加到最大值,剛好是除重複元素外的所有字串可能。
4、然後我們考慮重複元素,當我們找到重複元素時,我們可以發現加上重複元素後的值還是與前一元素組的值相同,則我們只要再原有的基礎上再累加一邊原值即可
**如下:
#include
#include
#define n 26
intnum_ber
(char s[n]
)//實現題目函式
;//定義26個字母(相當於標記元素)
int i=
0,j,k,m=0;
int sum=
0//定義字串分值和
while
(s[i]
!='\0'
)//統計字串元素個數
for(j=
1;j<=i;j++
)//依次對比字串元素
else
//存在元素相同時,字串也屬於分值和部分
}for
(int n=
1;n<=m;n++
)//所有可能分值相加
m=0;
//每找完一次,對m重新初始化 }
return sum;
}int
main()
//主函式
可能存在不足,歡迎指正。 藍橋杯子串分值和
樣例說明 樣例說明 子串 f值 a 1ab 2 aba 2 abab 2 ababc 3 b 1ba 2 bab 2 babc 3 a 1ab 2 abc 3 b 1bc 2 c 1n 100 思路對字串的所有子串進行遍歷,同時對子串進行去重操作。include include using name...
藍橋杯 字串統計
題目 給定乙個長度為n的字串s,還有乙個數字l,統計長度大於等於l的出現次數最多的子串 不同的出現可以相交 如果有多個,輸出最長的,如果仍然有多個,輸出第一次出現最早的。輸入格式 第一行乙個數字l。第二行是字串s。l大於0,且不超過s的長度。輸出格式 一行,題目要求的字串。輸入樣例1 4bbaabb...
藍橋杯 字串對比
描述 給定兩個僅由大寫字母或小寫字母組成的字串 長度介於1到10之間 它們之間的關係是以下4中情況之一 1 兩個字串長度不等。比如 beijing 和 hebei 2 兩個字串不僅長度相等,而且相應位置上的字元完全一致 區分大小寫 比如 beijing 和 beijing 3 兩個字串長度相等,相應...