A101 搜索 Search

 

【引例】 求S=1!+2!+3!+...+10!,要求用函数完成。(答案4037913)

//函数版

#include<stdio.h>
int fac(int n){
    int x=1;
    for(int i=2;i<=n;i++)x=x*i;
    return x;
}
int main(){
    int s=0;
    for(int i=1;i<=10;i++)s=s+fac(i);
    printf("%d\n",s);
    return 0;
}

  

//递归版

#include<stdio.h>
int fac(int n){
    if(n==1)return 1;
    else return n*fac(n-1);
}
int main(){
    int s=0;
    for(int i=1;i<=10;i++)s=s+fac(i);
    printf("%d\n",s);
    return 0;
}

  

 

 

 

 

 

 

 

 

 

 

 

#include<stdio.h>
int n,m;
void DFS(int u,int s){
    if(u==n){printf("%d\n",s); return;}
    for(int i=1;i<=m;i++)DFS(u+1,s*10+i);
}
int main(){
    scanf("%d%d",&n,&m);
    DFS(0,0);
    return 0;
}

  

 

 

 

#include<bits/stdc++.h>
using namespace std;
int x[10],a[10],b[20],c[20];
void DFS(int i){
    if(i==9){for(int i=1;i<=8;i++)cout<<x[i]<<" "; cout<<endl; return;}
    for(int j=1;j<=8;j++)if(!a[j]&&!b[i+j]&&!c[i-j+7]){
        x[i]=j;
        a[j]=b[i+j]=c[i-j+7]=1;
        DFS(i+1);
        a[j]=b[i+j]=c[i-j+7]=0;
    }
}
   
int main(){
    DFS(1);
    return 0;
}

  

 

 

素数环

 

 

#include<bits/stdc++.h>
using namespace std;
int p[40]={0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1};
int n,k,v[20],x[20]={0,1};
void DFS(int u){
    if(u==n+1&&p[x[n]+1]){
        for(int i=1;i<=n;i++)cout<<x[i]<<" ";
        cout<<endl;return;
    }
    for(int i=2;i<=n;i++)if(!v[i]&&p[x[u-1]+i]){
        x[u]=i;v[i]=1;
        DFS(u+1);
        v[i]=0;
    }
}
int main(){
    while(cin>>n){
        printf("Case %d:\n",++k);
        DFS(2);
        puts("");
    }
    return 0;
}

  

 

posted @ 2016-05-11 10:25  codeisking  阅读(839)  评论(0)    收藏  举报