试题 历届试题 带分数

#include<stdio.h>
#include<cstring>
#include<iostream>
using namespace std;
int num,sum=0;
int s[10],visit[10];

void del(int s[]){
    int a,b,c,i,j,k;
    for(i=1;i<=9;i++){
        a=0;
        for(j=1;j<=i;j++){
            a=a*10+s[j];
        }
        if(a<num){
            for(j=(9-i)/2+i;j<=8;j++){
                b=0;
                c=0;
                for(k=i+1;k<=j;k++){
                    b=b*10+s[k];
                }
                for(k=j+1;k<=9;k++){
                    c=c*10+s[k];
                }
                if(b%c==0&&a+b/c==num){
                    sum++;
//                    printf("s");
                }
            }
        }
    }
    return;
}
void dfs(int step,int n){
    if(step==n){
        del(s);
        return;
    }
    else{
        for(int i=1;i<=9;i++){
            if(visit[i]==0){
                s[step]=i;
                visit[i]=1;
                dfs(step+1,n);
                visit[i]=0;
            }
        }
    }
}
int main(){
//    printf("%d
",sum);
    memset(visit,0,sizeof(visit));
    scanf("%d",&num);
    dfs(1,10);
    printf("%d
",sum);
}
原文地址:https://www.cnblogs.com/banxiabx/p/12525448.html