解题思路:
注意事项:
参考代码:
//按树的思路
//连续两个都建站 则第三个不能建
/* 0 1
0 1 0 1
0 1 0 1 0 1 0 1
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int a[41];
int n;
int z;
void glc(int c){
if(c==n){ //位置排满
z++; //每种可能 z+1
return ;
}
else{
if(a[c-1]==1 && a[c-2]==1){ //如果前面两个位置都有核电站了 那么此处就不能建站
a[c]=0;
glc(c+1);
}
else{
int i;
for(i=0;i<=1;i++){ //0 表示不建站 1表示建站
a[c]=i;
glc(c+1);//递归
}
}
}
}
int main(){
while(scanf("%d",&n)!=EOF){
if(n==0){//如果没有坑位的话 直接跳过
continue;
}
int c=0; //注意初始值设为0 开始有1 0 两种变量
z=0;
glc(c);
printf("%d\n",z);
}
return 0;
}
0.0分
5 人评分
C语言训练-计算1977!* (C++代码)浏览:907 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:1072 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:606 |
wu-淘淘的名单 (C++代码)浏览:1532 |
C语言程序设计教程(第三版)课后习题6.6 (C++代码)浏览:649 |
1126题解浏览:649 |
1128题解(返回值为数组的情况)浏览:571 |
矩阵乘方 (C语言代码)浏览:1079 |
计算质因子 (C语言代码)浏览:778 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:559 |