book[i]=0;第一次打印出来后,下面的执行步骤是怎样的呢?
希望大家帮帮看看

解决方案 »

  1.   

    还有一个问题
    这段C代码怎么改成Java代码,结构体中的数组在类中怎么实现呢? 
    #include <stdio.h>
     struct queue { 
    int data[100];//队列的主体,用来存储内容 
    int head;//队首 
    int tail;//队尾 }; int main() { 
    struct queue q; 
    int i; 
    //初始化队列 
    q.head=1; 
    q.tail=1; 
    for(i=1;i<=9;i++) { 
    //依次向队列插入9个数 
    scanf("%d",&q.data[q.tail]); 
    q.tail++; } 
    while(q.head<q.tail) //当队列不为空的时候执行循环 { //打印队首并将队首出队 printf("%d ",q.data[q.head]); 
    q.head++; 
    //先将新队首的数添加到队尾 
    q.data[q.tail]=q.data[q.head]; 
    q.tail++; 
    //再将队首出队 
    q.head++; } 
    getchar();getchar(); 
    return 0; 

      

  2.   

    不是,我不是想问动态规划的状态转移方程,我只想知道dfs方法递归的执行过程,我发一张运行结果的图第一次打印出123后return,然后book[i]=0那里是怎样执行的?,以及后续的全排序是怎么打印出来的
      

  3.   

    public static void dfs(int step){
    if(step == n + 1){
    for (int i = 1 ; i <= n; i++){
    System.out.println("a[" +i + "]=" +a[i]);
    }
    System.out.println();
    return;
    }
    System.out.println("Step : " + step);
    for (int i = 1 ; i <= n; i++){
    if(book[i] == 0){
    a[step] = i;
    book[i] = 1;
    dfs(step + 1);
    book[i] = 0;
    }
    }
    return;
    }
    这样看看执行顺序吧
    另:结构体里的数组你也可以定义为数组,或者定位为ArrayList,vector之类的。