這題 根據題意 網上終於找到個 相似的題目
戳我原題 給的實在太長了 我給你簡短翻譯一下:
給定兩個長度均為n的字串( n<=100) 判斷它們之間的26個字母能否一一對應 如abb和cdd可以相互對應 方法是a->c b->d
要是相同 輸出yes 否則 輸出no
//先去次飯了 回來再寫下去。。。。
go on。。。
講下這題的思路:
既然是字母一一對應的 那麼如果是yes的情況下 那麼相對應的字母的個數必然是相等的 想到這裡 這題就不難了 就是怎麼將字串中每個字母出現的次數儲存下來
這邊 注意的是 不能忘記了排序 你可能a中 儲存了3個a 2個b b中保持了2個c 3個d 要是不進行排序 可能導致2和3 進行比較 就得出了錯誤的結論
這邊它提供了 用 map的做法 看上去 的確 高大上 而且很舒服
1 #include 2 #include 3 #includeview code4 #include 5 #include 6 #include 7
using
namespace
std;89
string
str1 , str2;
10int cnta[110
];11
int cntb[110
];12
intmain()
1331 alen =stra.size();
32 blen =strb.size();
33if( alen!=blen )
3437
else
3844 i = 0;45
for( itb = strb.begin() ; itbstrb.end() ; itb++)
4649 sort( cnta , cnta+alen );
50 sort( cntb , cntb+blen );
51for( i = 0 ; i)
5258
}59 printf( "
%s\n
",flag?"
yes":"no"
);60}61
}62return0;
63 }
我自己寫了個不用map實現的 **短了點 但感受還是用map看上去 厲害點。。。
1 #include 2 #include 3 #include 4view codeusing
namespace
std;56
char stra[110] , strb[110];7
int cnta[110] , cntb[110];8
9int
main()
1023 sort( cnta , cnta+26
);24 sort( cntb , cntb+26
);25
for( i=0 ; i<=25 ; i++)
2632
}33 printf( "
%s\n
",flag?"
yes":"no"
);34}35
return0;
36 }
最近 要作web 又要應付 高數 ....
有個妹子 陪伴就好了
new 乙個出來?
可以不 delete 嗎..................
一天一道演算法題 樹狀陣列
題目 模板 樹狀陣列1 樹狀陣列和線段樹差不多,可以處理區間操作,但是處理不了太複雜的區間問題。不過 比線段樹簡潔很多很多!時間複雜度都為o logn 例如,區間 1,8 儲存方式如下 1 tree 1 num 1 001 001 2 tree 2 num 2 num 1 010 010 001 3...
一天一道演算法題 線段樹
題目 模板 線段樹1 rmq問題 range minimum maximum query 和求區間和的問題可以用暴力法做,時間複雜度為o n 2 用在本題會超時,所以我們選擇線段樹做。線段樹是一種用於區間操作的資料結構,用二叉樹構造。如圖。線段樹的每個節點代表了乙個區間。防止超時,用了lazy標記。...
一天一道演算法題 5 24 遞迴
我們每一天都應該比昨天更強一點 觀察下列式子 12 12 1 12 6 2 12 4 3 12 3 4 12 3 2 2 12 2 6 12 2 3 2 12 2 2 3 對於給定的n 計算n公有多少種不同的分解式?1 include 2 using namespace std 34 int cnt...