打印有重复数字的数列的 一个递归解法
来源:互联网 发布:淘宝众筹的东西靠谱吗 编辑:程序博客网 时间:2024/06/05 02:13
全新整理:微软、谷歌、百度等公司经典面试100题
40、用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列,
如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连.
int nCnt = 0;
void PrintIA(int * r)
{
if(r[3]==4) return;
int j = 0;
while(r[j]!=3)j++;
if(j==0 && r[1]==5)
return;
else if(j==5 && r[4]==5)
return;
else if(r[j-1]==5 || r[j+1]==5)
return;
for(int i=0;i<6;i++)
printf("%d", r[i]);
printf("/n");
nCnt++;
}
void arrage(int *p, bool *q, int *r, int s)
{
for(int i=0;i<6;i++)
{
if(q[i]) continue;
r[s++] = p[i];
if(s==6)
{
PrintIA(r);
return;
}
q[i] = true;
arrage(p, q, r, s);
q[i] = false;
s--;
if(i==1)i++;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int p[6] = {1,2,2,3,4,5};
bool q[6] = {0};
int r[6] = {0};
arrage(p, q, r, 0);
printf("%d/n", nCnt);
return 0;
}
- 打印有重复数字的数列的 一个递归解法
- 求数列的全排列(递归解法)
- Fibonacci数列 递归和非递归的解法
- fibonacci数列的递归和非递归解法
- 一个存在重复数字的正整数数列,每个数都不超过32,找出其中所有重复的数字
- 打印菱形及斐波纳契数列的几种解法
- 求斐波那契数列的非递归解法;
- 数值三角形的一个递归解法(超时)
- 一个笔试题的递归解法
- 八皇后的一个回溯递归解法
- 合法IP&窗口最大值数组&打印素数&递归逆序一个栈&栈排序另一个栈&MyString&寻找数组中出现的重复字符&数组中的重复数字&逆序打印链表&空格替换成%20
- 100个数,范围是0(1)~99 ,其中有一个重复,求重复的数字。
- 100个数,范围是0(1)~99 ,其中有一个重复,求重复的数字
- 100个数,范围是0(1)~99 ,其中有一个重复,求重复的数字。
- 菲波那切数列的递归与非递归解法以及青蛙跳台阶问题
- 数组中是否有重复的数字
- DFS有重复数字的全排列
- 有一个四位数 a1a2a3a4,每一位数都是0到9之间的一个数字(多种解法)
- 转载资料 剖析 SurfaceView ! Callback以及SurfaceHolder!!
- 转载资料 剖析 SurfaceView ! Callback以及SurfaceHolder!!
- 翡翠 A, B, C, D
- 周洛小记
- webwork status 用法
- 打印有重复数字的数列的 一个递归解法
- 硬盘零磁道概念和CHS、LAB寻址
- WTK工作路径更改
- simhash算法的原理
- C++箴言:谨慎使用模板元编程
- 我写的数据库操作类DBUtil
- 使用SQLLDR导入数据
- Android 核心分析-----IPC框架分析Binder,Service,Service manager
- ResultSet.createStatement参数问题