标签:style blog color sp for on div log bs
A message containing letters from A-Z is being encoded to numbers using the following mapping:
‘A‘ -> 1 ‘B‘ -> 2 ... ‘Z‘ -> 26
Given an encoded message containing digits, determine the total number of ways to decode it.
For example,
Given encoded message "12", it could be decoded as "AB" (1 2) or "L" (12).
The number of ways decoding "12" is 2.
1 int numDecodings(string s) 2 { 3 int n = s.size(), ret; 4 if (n < 1 || s[0] == ‘0‘) 5 return 0; 6 7 int *ways = new int[n + 1], i; 8 ways[0] = 1; 9 ways[1] = 1; 10 for (i = 1; i < n; i++) 11 { 12 if (s[i] == ‘0‘) 13 { 14 if (s[i - 1] == ‘0‘ || s[i - 1] > ‘2‘) 15 return 0; 16 else 17 ways[i + 1] = ways[i - 1]; 18 } 19 else if (s[i] <= ‘6‘) 20 { 21 if (s[i - 1] == ‘0‘ || s[i - 1] > ‘2‘) 22 ways[i + 1] = ways[i]; 23 else 24 ways[i + 1] = ways[i] + ways[i - 1]; 25 } 26 else 27 { 28 if (s[i - 1] == ‘1‘) 29 ways[i + 1] = ways[i] + ways[i - 1]; 30 else 31 ways[i + 1] = ways[i]; 32 } 33 } 34 35 ret = ways[n]; 36 delete[] ways; 37 return ret; 38 }
标签:style blog color sp for on div log bs
原文地址:http://www.cnblogs.com/ym65536/p/4168057.html