一道网上找的微软笔试题
2010-05-28 19:55
351 查看
给你一串数字,例如"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即可,可以考虑用递归实现。
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> using namespace std; void decrypt(char a[],char b[], int begin, int end) //a[begin...end] { int i=begin; while(i<=end && a[i]!='6' && a[i]!='9') { b[i]=a[i]-2; i++; } if(i>end) { b[i]='/0'; for(int j=0;j<=end+1;j++) cout << b[j]; cout << endl; return; } else { if(a[i]=='6') { for(int j=0;j<=2;j++) { if(j==0) b[i]='3'; else if(j==1) b[i]='4'; else if(j==2) b[i]='6'; decrypt(a,b,i+1,end); } } if(a[i]=='9') { for(int j=0;j<=2;j++) { b[i]='7'+j; decrypt(a,b,i+1,end); } } } return; } int main() { char *a="2467976749"; int length=strlen(a); char *b=new char[length+1]; decrypt(a,b,0,length-1); }
相关文章推荐
- 网上的微软笔试试题和答案
- 海盗瓜分金币--一道网上流传的微软面试题
- 微软最新的一道笔试题,我觉的出的不好,要改的地方太多了
- 赴微软测试工程师必考一道笔试题目
- 一道微软笔试题
- 微软一道笔试题目
- 一道微软的Mini-Test笔试题 解决方法。
- 网上的一道搜狗笔试题
- 一道微软笔试题,算法才是王道
- C语言测试题目解答:微软一道笔试题,2005年华为招聘
- 一道微软笔试题: 4个袋子,15个球,每个袋子至少放一个球,而且袋子中的球数量不能重复,有多少种方式
- 今天笔试的一道题,在网上搜到的答案。
- 微软的一道C语言笔试题(转)
- 送上今年微软的一道笔试题
- 一道微软笔试题
- 一道微软的Mini-Test笔试题(一)
- 一道微软MiniTest笔试题
- 一道微软的Mini-Test笔试题(二)
- 微软的一道笔试编程试题