作业帮 > 综合 > 作业

算法竞赛入门经典 P135 看不懂

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/24 19:05:46
算法竞赛入门经典 P135 看不懂
#include
int A[10];
void print_subset(int n,int *A,int cur)
{
for(int i=0;i
算法竞赛入门经典 P135 看不懂
首先要说你代码风格太挫了.再者说这个也不是P135,不带这么玩人的,看着像是怎么子集生成吧.先说main函数,你里面接收n之后根本没必要再接收n个整型值.因为在递归的时候程序就自己赋值了.第一从main函数进入到print_subset函数,先是打印上一次生成的集合,接着确定接下来要生成的集合的最小可能值,接着再生成当前集合的后续部分,也就是你下面的那个for循环,举个例子,如果cur=0,那么s=0,A[0]=0,递归生成后面的部分,cur=1,s=A[0]+1=1,A[1]=1,继续如果当前得到cur=n-1,s=n-1,A[n-1]=n-1,(我说的是回溯之前的),接下来的循环cur=n,s=n,发现for循环执行不了了,所以程序就会回溯了,回朔回去是i的自加操作,一自加i=n,超出范围了,继续回溯,接着就会把,A[cur]=赋值一个比当前值更大的值.只能说这么多了,剩下的就自己按着这个套路理解.哪里不清楚再追问或者怎样都行.