设为首页 加入收藏

TOP

用回溯法和栈解决阿里面试题排队问题(二)
2018-10-22 02:10:21 】 浏览:130
Tags:回溯 解决 里面 试题 排队 问题
lse
86 { 87 if (x1!=n) //1未全部入栈 88 { 89 p[++i]=1; 90 x1++; 91 TF=false; //1入栈 92 } 93 else 94 { 95 p[++i]=2; 96 x2++; 97 TF=false; //2入栈 98 } 99 } 100 } 101 else //部分序列不合法,回溯 102 { 103 p[i]=0; 104 x2--; 105 i--; 106 TF=true; //2弹出栈,回溯 107 } 108 } 109 } 110 } 111 } 112 else //栈满,找到候选解 113 { 114 if (x2<=x1) //判断候选解是否为可行解 115 { 116 count++; 117 printf("第%d个排列:\n", count); 118 int j; 119 for (j=0; j<2*n; j++) 120 { 121 if (p[j]==2) 122 printf("%d ", j+1); 123 } 124 printf("\n"); //候选解为可行解,输出,count自增1 125 126 for (j=0; j<2*n; j++) 127 { 128 if (p[j]==1) 129 printf("%d ", j+1); 130 } 131 printf("\n"); 132 } 133 p[i]=0; 134 x2--; 135 i--; 136 TF=true; //栈底2弹出栈回溯 137 138 } 139 } 140 printf("总共有%d个排列\n", count); //输出可行解总数 141 }

运行结果:

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇洛谷T21776 子序列 下一篇阿拉伯数字到中文大写数字的转换

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目