1. 程式人生 > >1、黑化的牛牛--全國模擬(四)

1、黑化的牛牛--全國模擬(四)

size clas bold urn 解題思路 -a 限制 namespace fun

[編程題] 黑化的牛牛 時間限制:1秒 空間限制:32768K 牛牛變得黑化了,想要摧毀掉地球。但他忘記了開啟地球毀滅器的密碼。牛牛手裏有一個字符串S,牛牛還記得從S中去掉一個字符就恰好是正確的密碼,請你幫牛牛求出他最多需要嘗試多少次密碼。 如樣例所示S = "ABA",3個可能的密碼是"BA", "AA", "AB". 當S = "A", 牛牛唯一可以嘗試的密碼是一個空的密碼,所以輸出1. 輸入描述: 輸入包括一個字符串S,字符串長度length(1 ≤ length ≤ 50),其中都是從‘A‘到‘Z‘的大寫字母。 輸出描述: 輸出一個整數,表示牛牛最多需要嘗試的密碼次數。 輸入例子:
ABA 輸出例子: 3 解題思路:本題使用set來存儲,可以自動過濾相同的字符串,然後針對字符串,求出其刪掉第0位-第n-1位的全部結果,存入set中,set的大小即為結果數,其中length==1的情況特殊處理。
 1 #include <iostream>
 2 #include <set>
 3  
 4 using namespace std;
 5 //去掉字符串的第i位字符
 6 string fun(string str,int n)
 7 {
 8     int length = str.size();
 9     string tmp;
10
tmp = str; 11 for(int i=n;i<length-1;i++) 12 { 13 tmp[i] = tmp[i+1]; 14 } 15 16 tmp[length-1] = \0; 17 18 return tmp; 19 } 20 int main() 21 { 22 string s; 23 while(cin>>s) 24 { 25 set<string> res; 26 int count = 0; 27 int
length = s.size(); 28 if(length == 1) 29 { 30 cout<<1<<endl; 31 } 32 else 33 { 34 for(int i=0;i<length;i++) 35 { 36 string temp; 37 temp = fun(s,i); 38 res.insert(temp); 39 } 40 count = res.size(); 41 cout<<count<<endl; 42 } 43 } 44 return 0; 45 }


1、黑化的牛牛--全國模擬(四)