最智者 发表于 2017-12-9 22:04:14

大神求教!!为很么不能输出??

#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
int a={0,1,2,3,4,5,6,7,8,9};
int b={0};
int c={0};
void dfs(int n){
        if(c!=0){
                for(int i=1;i<=n;i++){
                        printf("%5d",&c);
                        cout<<endl;
                }
                return ;
        }
        for(int i=n;i>=1;i--){
                if(b=0){
                        c=a;
                        b=1;
                        return dfs(n-1);
                        b=0;
                }
        }
}
int main(){
        int n;
        scanf("%d",&n);
        dfs(n);
        return 0;
}
这是深搜的全排列问题

BngThea 发表于 2017-12-9 22:28:55

把c前面的取地址符去掉

最智者 发表于 2017-12-10 00:34:54

BngThea 发表于 2017-12-9 22:28
把c前面的取地址符去掉

谢谢,可是还不行

最智者 发表于 2017-12-10 00:35:23

#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
int b={0,0,0,0,0,0,0,0,0,0};
int c={0,0,0,0,0,0,0,0,0,0};
int k;
void dfs(int n){
        if(n==0){
                for(int i=1;i<=k;i++){
                        printf("%5d",c);
                }
                cout<<endl;
                return;
        }
        for(int i=n;i>=1;i--){
//                cout<<"<<<<<"<<c<<endl;
//                cout<<"9.8"<<b;
                if(b==0){
////                        cout<<"6.5"<<c;
                        c=i;
                        b=1;
                        cout<<i<<"<"<<c;
                        return dfs(n-1);
                        b=0;
                }
        }
}
int main(){
        int n;
        k=n;
        scanf("%d",&n);
        dfs(n);
        return 0;
}

最智者 发表于 2017-12-10 00:35:59

最智者 发表于 2017-12-10 00:35
#include
#include
#include


刚修改的

BngThea 发表于 2017-12-10 07:38:49

最智者 发表于 2017-12-10 00:35
#include
#include
#include


把k=n放到scanf语句后面

寒月独狼 发表于 2017-12-10 09:54:27

if(c!=0) ???亲,你的c有不等于0的吗??

最智者 发表于 2017-12-10 12:29:07

寒月独狼 发表于 2017-12-10 09:54
if(c!=0) ???亲,你的c有不等于0的吗??

亲,给它赋值之后就不是0了

最智者 发表于 2017-12-10 12:31:00

BngThea 发表于 2017-12-10 07:38
把k=n放到scanf语句后面

感谢你的耐心,改了之后可是只能输出一行,真捉鸡。

最智者 发表于 2017-12-10 12:32:19

#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
int b={0,0,0,0,0,0,0,0,0,0};
int c={0,0,0,0,0,0,0,0,0,0};
int k;
void dfs(int n){
        if(n==0){
                for(int i=1;i<=k;i++){
                        printf("%5d",c);
                }
                cout<<endl;
                return;
        }
        for(int i=n;i>=1;i--){
                if(b==0){
                        c=i;
                        b=1;
                        return dfs(n-1);
                        b=0;
                }
        }
}
int main(){
        int n;
        scanf("%d",&n);
        k=n;
        dfs(n);
        return 0;
}
第N次修改

BngThea 发表于 2017-12-10 12:51:51

最智者 发表于 2017-12-10 12:32
#include
#include
#include


输出一行正常啊,你有没有对输出格式进行控制,只在最后加了个换行

最智者 发表于 2017-12-10 12:54:23

BngThea 发表于 2017-12-10 12:51
输出一行正常啊,你有没有对输出格式进行控制,只在最后加了个换行

嗯。。不是那个意思,只输出了一种排列方式,并没有把所有的都输出

BngThea 发表于 2017-12-10 13:25:27

最智者 发表于 2017-12-10 12:54
嗯。。不是那个意思,只输出了一种排列方式,并没有把所有的都输出

从流程来看,就只进行了一次循环输出
页: [1]
查看完整版本: 大神求教!!为很么不能输出??