字串分值和(藍橋杯題目)

2021-10-10 05:15:25 字數 1049 閱讀 9972

字串分值和問題分析:

題目

隨機輸入一串字元,列如: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 兩個字串長度相等,相應...