NYOJ-469 擅长排列的小明 II AC 分类: NYOJ 2014-01-02 22:19 159人阅读 评论(0) 收藏

时间:2023-03-09 17:45:55
NYOJ-469 擅长排列的小明 II  AC                                                    分类:            NYOJ             2014-01-02 22:19    159人阅读    评论(0)    收藏

NYOJ-469 擅长排列的小明 II  AC                                                    分类:            NYOJ             2014-01-02 22:19    159人阅读    评论(0)    收藏

最初的第一印象是和组合数一个性质的题目。所以用了回溯法,结果,你懂的。。。

#include<stdio.h>
#include<math.h>
void dfs(int n,int d,int num[]);
int k=0;
int max=0; int main(){ while(scanf("%d",&k)!=EOF){
int num[57]={0};
num[1]=1;
dfs(1,1,num);
printf("%d\n",max);
max=0;
}
return 0;
} void dfs(int n,int d,int num[]){
int m;
if(n==k){
max++;
return ;} for(m=1;m<=k;m++){
if((!num[m])&&((fabs(m-d))<=2)){
num[m]=n+1;
dfs(n+1,m,num);
num[m]=0;
}
}
}

结果看完解题报告,原来是斐波那契数列。。。。

#include <stdio.h>
int main()
{
int i,f[60],n; f[1]=f[2]=1;
f[3]=2;
for(i=4;i<56;i++){
f[i]=f[i-1]+f[i-3]+1;
}
while(scanf("%d",&n)!=EOF){
printf("%d\n",f[n]);
} return 0;
}

各种纠结,不过,开心的是,我居然用搜索写出来了,虽然没过,但是也是有进步的啦

版权声明:本文为博主原创文章,未经博主允许不得转载。