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;
}

浙公网安备 33010602011771号