博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一道递归题
阅读量:4332 次
发布时间:2019-06-07

本文共 1148 字,大约阅读时间需要 3 分钟。

给定一串由0, 1, ?组成的字符,如"0?10?00", 用0或1替换其中的问号,列举出所有可能的情况。

看到这个题首先反应的是用递归,代码如下:

#include 
#include
#include
using namespace std;void strTrans(string str, int idx, vector
& res){ if(idx == str.length()) { res.push_back(str); return; } if(str[idx] == '?') { str[idx] = '0'; strTrans(str, idx+1, res); str[idx] = '1'; strTrans(str, idx+1, res); } else strTrans(str, idx+1, res);}int main(){ string str = "???"; vector
res; strTrans(str, 0, res); int len = res.size(); for(int i = 0; i < len; i++) { cout << res[i] << endl; } return 0;}

接下来需要写测试样例:

1. 在进行单元测试的时候,需要考虑哪些情况?

testcase至少需要包含以下情况:

1. 能覆盖写的代码的每一行。

2. 测试边界情况,如0, null, 递归的基准情况,大数值等。

“” --> “”

“?”   -->  "0", "1"

"1"   --> "1"

"1?"  --> "10", "11";

"??" --> "11", "10", "01", "00"

2. 在进行单元测试时,output怎么写可以避免出现测试样例的output与程序输出的output的顺序不一致问题?

3. 如果输入字符串包含许多“?”,如包含100个“?”,会出现什么情况?

答:100个“?”, 则会有2^100个结果字符串,存储在res中,会将内存消耗完。

4. 有方法可以避免这种情况的发生吗?

 

转载于:https://www.cnblogs.com/darlwen/p/3458010.html

你可能感兴趣的文章
Ubuntu 18.04 root 使用ssh密钥远程登陆
查看>>
Servlet和JSP的异同。
查看>>
虚拟机centOs Linux与Windows之间的文件传输
查看>>
ethereum(以太坊)(二)--合约中属性和行为的访问权限
查看>>
IOS内存管理
查看>>
middle
查看>>
[Bzoj1009][HNOI2008]GT考试(动态规划)
查看>>
Blob(二进制)、byte[]、long、date之间的类型转换
查看>>
OO第一次总结博客
查看>>
day7
查看>>
iphone移动端踩坑
查看>>
vs无法加载项目
查看>>
Beanutils基本用法
查看>>
玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)
查看>>
《BI那点儿事》数据流转换——百分比抽样、行抽样
查看>>
哈希(1) hash的基本知识回顾
查看>>
Leetcode 6——ZigZag Conversion
查看>>
dockerfile_nginx+PHP+mongo数据库_完美搭建
查看>>
Http协议的学习
查看>>
【转】轻松记住大端小端的含义(附对大端和小端的解释)
查看>>