給你一串數字,例如"1234567890",按照以下規則加密:
1. 將所有的3,6換成4
2. 將所有的數字加2,如果加2後得到的數字大於9,則替換為9
問題:
1. 編寫加密程式
2. 編寫解密程式
思考:
加密程式很簡單,我這裡就不寫了。
寫一下解密程式,解密程式要輸出所有可能的字串組合,
數字對應如下:
0 - 2
1 - 3
2 - 4
3 - 6
4 - 6
5 - 7
6 - 6
7 - 9
8 - 9
9 - 9
可以發現6和9兩個數字各有3種可能情況,於是就要迴圈遍曆,然後其他數字,簡單的減2即可,可以考慮用遞迴實現。
#include <iostream><br />using namespace std;</p><p>void decrypt(char a[],char b[], int begin, int end) //a[begin...end]<br />{<br />int i=begin;<br />while(i<=end && a[i]!='6' && a[i]!='9')<br />{<br />b[i]=a[i]-2;<br />i++;<br />}<br />if(i>end)<br />{<br />b[i]='/0';<br />for(int j=0;j<=end+1;j++)<br />cout << b[j];<br />cout << endl;<br />return;<br />}<br />else<br />{<br />if(a[i]=='6')<br />{<br />for(int j=0;j<=2;j++)<br />{<br />if(j==0)<br />b[i]='3';<br />else if(j==1)<br />b[i]='4';<br />else if(j==2)<br />b[i]='6';<br />decrypt(a,b,i+1,end);<br />}<br />}<br />if(a[i]=='9')<br />{<br />for(int j=0;j<=2;j++)<br />{<br />b[i]='7'+j;<br />decrypt(a,b,i+1,end);<br />}<br />}<br />}<br />return;<br />}</p><p>int main()<br />{<br />char *a="2467976749";<br />int length=strlen(a);<br />char *b=new char[length+1];<br />decrypt(a,b,0,length-1);<br />}