zoukankan      html  css  js  c++  java
  • 0709-杭电算法题

    母牛的故事

    • 这是去年我们集训的时候写的题,想想还是记得当时是怎么错的,奈何语文还是有限
      个人理解
      关于算法题,我觉得主要还是在于理解上
      首先,是有一头母牛,母牛每年生一头小牛,也就是说,在前三年分别每年是1头,2头,3头
      但是在第四年之后,情况开始发生变化,小牛长大了也可以生小牛了,
      假设之后n年有f(n)头牛,那么f(n)=f(n-1)+f(n-3),意思就是前一年的小牛的数量f(n-1),加上在这一年刚出生小牛的数量f(n-3)【三年前的牛开始生小牛】
    #include <stdio.h>
    
    int main(){
        int f[55],i,n;
        while(scanf("%d",&n) !=  EOF && n!=0){
            f[1] = 1,f[2] = 2,f[3] = 3;
            for(i = 4;i<=n;i++){
                f[i] = f[i-3] + f[i-1];
            }
            printf("%d
    ",f[n]);
        }
        return 0;
    }
    

    汉诺塔Ⅲ

    • 在经典的汉诺塔问题上修改了一下条件,不允许从最左边移动到最右边
      个人理解
      关于递归,习惯性的先拿两个试试,之后再类比,将上面的一个看作是一堆
      在两个的情况下,第一步:将小的从最左边移到中间,再移到最右边,这个时候才能将大的移到中间。此时1+1+1
      第二步:将小的从最右边移到最左边,这个时候大的才能移到最右边。此时1+1+1
      第三步:将小的从最左边移动到最右边,完成。此时1+1
      类比到多个的时候:
      将上面的n-1个看作是整体,移到最右边 f(n-1) 次,大的移到中间 1 次
      将n-1个移到最左边 f(n-1) 次,大的移到最右边 1 次
      将n-1个移到最右边 f(n-1) 次,完成。
      总的就是 f(n)=3*f(n-1)+2 次
    #include <stdio.h>
    long long f(int n)
    {
        if(n == 0){
            return 0;
        }
        if(n == 1){
            return 2;
        }
        return 3*f(n-1)+2;
    }
    
    int main()
    {
        int n;
        long long count;
        while(scanf("%d",&n) != EOF){
            count = f(n);
            printf("%lld
    ",count);
        }
        return 0;
    }
    

    十进制数转二进制数

    • 这个的方法比较多,本来我想的是通过栈的方式,但是觉得比较麻烦,用数组模拟栈吧
      个人理解
      将十进制数和二取余,将其存入一个数组,得到的数组就是倒叙的二进制数,之后在输出的时候再倒序输出就行了
    #include <stdio.h>
    int main()
    {
        int x;
        while(scanf("%d",&x) != EOF){
            int a,b[100],j=0;
            for(;j<100;j++){
                a = x%2;
                b[j] =  a;
                x = x/2;
                if(x == 0)
                    break;
            }
            for(j;j>=0;j--)
                printf("%d",b[j]);
            printf("
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    spring学习(一)--spring简介
    The Evolved Packet Core
    Git版本控制入门学习
    分家后中国移动运营商2G/3G频率分配
    English name
    中国互联网五大势力竞争力报告
    ping
    mysql架构
    MySQL存储引擎
    79款 C/C++开发工具开源软件
  • 原文地址:https://www.cnblogs.com/Indomite/p/13281276.html
Copyright © 2011-2022 走看看