Kitty猫基因编码
生活随笔
收集整理的這篇文章主要介紹了
Kitty猫基因编码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Kitty貓基因編碼?\operatorname{Kitty貓基因編碼}Kitty貓基因編碼
題目鏈接:luogu?P2562?\operatorname{luogu\ P2562}luogu?P2562
題目
小可可選修了基礎生物基因學。教授告訴大家 Super Samuel 星球上 Kitty 貓的基因的長度都是 222 的正整數(shù)次冪 ), 全是由兩種不同的基因單元組成的。 這兩種不同的基因單元分別記成 000 和 111 ,于是 Kitty 貓基因可以寫成一個 01 串表達式 。
為了便于分析和降低數(shù)據(jù)存儲量,教授發(fā)明了 ABC 編碼規(guī)則。該編碼規(guī)則是不斷地按照
對 Kitty 貓基因 01 串表達式 進行改寫, 直至最終被改寫成只含有字符 “A” 、“B” 、“C” 的符號串。
請你編寫程序幫助小可可求出 Kitty 貓基因的 ABC 編碼以協(xié)助教授開展科研工作。
輸入
文件中以一行的形式存放了一個 Kitty 貓基因的 01 串表達式。
輸出
以一行的形式輸出這個 Kitty 貓基因的 ABC 編碼。
樣例輸入1
00樣例輸出1
A樣例輸入2
01001011樣例輸出2
CCCABACCBAB數(shù)據(jù)范圍
給出的 01 字符串長度 Len≤256Len\leq 256Len≤256
思路
這道題其實和我之前做過的 FBI樹 很像,只有幾點不同:
代碼
#include<cstdio> #include<cstring>using namespace std;char a[1051];void work(int l, int r) {int check = a[l] - '0';for (int i = l + 1; i <= r; i++)if ((a[i] - '0') != check) {check = -1;break;}if (check == -1) {printf("C");if (l < r) {int mid = (l + r) >> 1;work(l, mid);work(mid + 1, r);}}else if (check == 0) printf("A");else printf("B"); }int main() {scanf("%s", &a);work(0, strlen(a) - 1);return 0; }總結
以上是生活随笔為你收集整理的Kitty猫基因编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VC 不愿承认的 4 个暗黑事实
- 下一篇: 蚂蚁金服开放平台-支付宝新版接口的参数设