C++setの応用
2370 ワード
テーマ1出所牛客網:https://www.nowcoder.com/questionTerminal/ab900f183e054c6d8769f2df977223b5
タイトル2ソース牛客網:https://www.nowcoder.com/profile/42483351/codeBookDetail?submissionId=46621727
まずsetコンテナの使い方(キー一意)を理解します.
タイトルの説明
牛はまた生物科学研究者から一つの任務を得た.今回、牛は科学研究者がDNA配列sからDNA配列sに現れていないDNA断片の最短の長さを見つけるのを助ける必要がある.例えば、s=AGGTCTAシーケンスには、すべての長さが1の('A','C','G','T')フラグメントが含まれているが、長さが2のフラグメントはすべて含まれていない.例えば、シーケンスには「AA」が含まれていないので、出力2である.
説明を入力:
出力の説明:
例1
入力
コピー
しゅつりょく
コピー
回答:
まずsetコンテナの使い方(キー一意)を理解します.
それぞれの長さnには2^n種の可能性がある.例えば長さが1の場合(A,C,G,T)の4種類がある.n=2で16種類.
例えば、長さ2のシーケンスは、
次に,入力列のうち長さnのサブ列が何種類あるかを探し,数が2^n個未満であればnを出力すればよい.コードは次のとおりです.
タイトルの説明
隣接する文字列のすべての組合せを出力する文字列を入力します.例を挙げると、abcが入力されると、その組み合わせはa、b、c、ab、bc、abcである.(注意:出力の組み合わせは重量を落とす必要があります)(40点)
説明を入力:
出力の説明:
例1
入力
コピー
しゅつりょく
コピー
タイトル2ソース牛客網:https://www.nowcoder.com/profile/42483351/codeBookDetail?submissionId=46621727
まずsetコンテナの使い方(キー一意)を理解します.
タイトルの説明
牛はまた生物科学研究者から一つの任務を得た.今回、牛は科学研究者がDNA配列sからDNA配列sに現れていないDNA断片の最短の長さを見つけるのを助ける必要がある.例えば、s=AGGTCTAシーケンスには、すべての長さが1の('A','C','G','T')フラグメントが含まれているが、長さが2のフラグメントはすべて含まれていない.例えば、シーケンスには「AA」が含まれていないので、出力2である.
説明を入力:
s, length(1 ≤ length ≤ 2000), 'A','C','G','T' 。
出力の説明:
, DNA s DNA 。
例1
入力
コピー
AGGTCTA
しゅつりょく
コピー
2
回答:
まずsetコンテナの使い方(キー一意)を理解します.
それぞれの長さnには2^n種の可能性がある.例えば長さが1の場合(A,C,G,T)の4種類がある.n=2で16種類.
例えば、長さ2のシーケンスは、
(AA, AG, AC, AT, CA, CC, CG, CT ……..)
を含み、すべてを判断しなければならない.(AA, CC, GG TT)
と判断すれば良いわけではありません.次に,入力列のうち長さnのサブ列が何種類あるかを探し,数が2^n個未満であればnを出力すればよい.コードは次のとおりです.
# include
# include
# include
# include
# include
# include
using namespace std;
int main(){
string str;
cin>>str;
int len=str.size();
for(int i=1;i<=len;i++){
set map;
for(int j=0;j
タイトルの説明
隣接する文字列のすべての組合せを出力する文字列を入力します.例を挙げると、abcが入力されると、その組み合わせはa、b、c、ab、bc、abcである.(注意:出力の組み合わせは重量を落とす必要があります)(40点)
説明を入力:
出力の説明:
, , , 。
例1
入力
コピー
bac
しゅつりょく
コピー
a b c ac ba bac
# include
# include
# include
# include
# include
# include
# include
# include
using namespace std;
int main(){
string s;
cin>>s;
set se;//set
set::iterator it;//set
int len=s.length();
for(int i=1;i<=len;i++){
for(int j=0;j+i-1