• 递归的题解 https://vjudge.net/contest/154741


    A - 母牛的故事 
    #include<iostream>
    using namespace std;
    long long  a[100];
    int main()
    {
      int n;
      while(cin>>n)
      {
        a[1]=1;a[2]=2;a[3]=3;a[4]=4;
        if(n==0) break;
        if(n<=4) cout<<n<<endl;
        else
        {
          for(int i=5;i<=n;i++)
          {
            a[i]=a[i-1]+a[i-3];
          }
          cout<<a[n]<<endl;
        }
      }
      return 0;
    }
    ————————————————————————————————————————————
    B - Fibonacci Again 
    #include<iostream>
    using namespace std;
    int a[10000004];
    int main()
    {
      int n;
      a[0]=1;
      a[1]=2;
      for(int i=2;i<=1000000;i++)
      {
        a[i]=(a[i-1]+a[i-2])%3;
      }
      while(cin>>n)
      {
        if(a[n]==0) cout<<"yes"<<endl;
        else cout<<"no"<<endl;
      }
      return 0;
    }
    ——————————————————————————————————————————————
    C - Prime Ring Problem 
    1.
    #include<iostream>
    #include<cstring>
    #include<cmath>
    using namespace std;
    int a[22],b[22],mark[22];
    int prime(int x)//判断是否是素数
    {
      int o=sqrt(x);
      if(x==1 || x==4) return 1;
      if(x==2 || x==3) return 0;
      for(int i=2;i<=o;i++)
      {
        if(x%i==0) return 1;
      }
      return 0;
    }
    void print(int n,int b[])//输出
    {
      for(int i=1;i<=n;i++)
      {
        if(i!=1) cout<<' ';
        cout<<b[i];
      }
      cout<<endl;
    }
    int judge(int front,int last,int k,int n)//递归判断素数环
    {
      if(prime(front+last)) return 0;
      b[k]=last;
      if(k==n && !prime(last+1))
      {
        print(n,b);
        return 1;
      }
      mark[last]=0;//标记是该数在子函数内不能在出现,但是回归主函数时必须释放
      for(int i=2;i<=n;i++)
      {
        if(mark[i] && judge(last,i,k+1,n)) break;
      }
      mark[last]=1;
      return 0;
    }
    int main()
    {
      int count=1,n;
      while(cin>>n)
      {
        for(int i=1;i<=n;i++)
        {
          mark[i]=1;
        }
        b[1]=1;
        cout<<"Case "<<count++<<":"<<endl;
        if(n==1) cout<<n<<endl;//1单独输出
        else
        for(int i=2;i<=n;i++)
        {
          judge(1,i,2,n);
        }
        cout<<endl;
      }
      return 0;
    }
    2.
    #include <iostream>
    #include <algorithm>
    #include<cmath>
    using namespace std;
    int a[30],vis[30];
    int prime(int x)//判断是否是素数
    {
      int o=sqrt(x);
      if(x==1 || x==4) return 1;
      if(x==2 || x==3) return 0;
      for(int i=2;i<=o;i++)
      {
        if(x%i==0) return 1;
      }
      return 0;
    }
    
    void dfs(int n,int m){
    
        if(n>m && prime(a[1]+a[m])==0){
            for(int i=1;i<=m;i++){
                if(i!=1) cout<<' ';
                cout<<a[i];
            }
            cout<<endl;
        }
    
        for(int i=2;i<=m;i++){
            if(vis[i]==0){
                a[n]=i;
                if(n==1 || (prime(i+a[n-1])==0)){
                        vis[i]=1;
                        dfs(n+1,m);
                        vis[i]=0;
    
                }
            }
        }
    
    }
    int main(){
    
        int n,count=1;
        while(cin>>n){
          cout<<"Case "<<count++<<":"<<endl;
        a[1]=1;
        vis[1]=1;
        dfs(2,n);
        cout<<endl;
      }
      return 0;
    }
    ——————————————————————————
    D - 一只小蜜蜂... 
    #include<iostream>
    using namespace std;
    __int64 a[52];
    int main()
    {
      __int64 N,c,b,i;
      a[0]=1;
      a[1]=1;
      for(i=2;i<=50;i++)
      {
        a[i]=a[i-1]+a[i-2];
      }
      cin>>N;
      while(N--)
      {
        cin>>c>>b;
        cout<<a[b-c]<<endl;
      }
      return 0;
    }
    ————————————————————————————————————
    E - Children’s Queue 
    #include<iostream>
    #include<cstring>
    using namespace std;
    const int maxn=1100;
    int a[maxn][maxn];
    int main()
    {
      int n,i,j;
      memset(a,0,sizeof(a));
      a[0][0]=0;
      a[1][0]=1;
      a[2][0]=2;
      a[3][0]=4;
      a[4][0]=7;
      for(i=5;i<=1001;i++)
      {
        for(j=0;j<=1007;j++)
        {
          a[i][j]+=(a[i-1][j]+a[i-2][j]+a[i-4][j]);
          if(a[i][j]>=10)
          {
            int h=a[i][j];
            a[i][j]=h%10;
            a[i][j+1]+=(h/10);
          }
        }
      }
      while(cin>>n)
      {
        for(i=1007;i>=0;i--)
        {
          if(a[n][i]) break;
        }
        for( ;i>=0;i--)
        {
          cout<<a[n][i];
        }
        cout<<endl;
      }
      return 0;
    }
    ——————————————————————————————————
    ——————————————————————————————————————————
    F - Problem B 
    #include<iostream>
    #include<cstring>
    using namespace std;
    const int maxn=1100;
    int a[maxn][maxn];
    int main()
    {
      int n,i,j;
      memset(a,0,sizeof(a));
      a[0][0]=0;
      a[1][0]=1;
      a[2][0]=2;
      a[3][0]=4;
      a[4][0]=7;
      for(i=5;i<=1001;i++)
      {
        for(j=0;j<=1007;j++)
        {
          a[i][j]+=(a[i-1][j]+a[i-2][j]+a[i-4][j]);
          if(a[i][j]>=10)
          {
            int h=a[i][j];
            a[i][j]=h%10;
            a[i][j+1]+=(h/10);
          }
        }
      }
      while(cin>>n)
      {
        for(i=1007;i>=0;i--)
        {
          if(a[n][i]) break;
        }
        for( ;i>=0;i--)
        {
          cout<<a[n][i];
        }
        cout<<endl;
      }
      return 0;
    }
    G题类似
    ————————————————————————————
    H - 放苹果 
    #include<iostream>
    #include<cstring>
    using namespace std;
    int a[21][21];
    int apple(int m,int n)
    {
    	if(a[m][n])return a[m][n];
    	else if(m==1 || n==1)
    	{
    		a[m][n]=1;
    		return a[m][n];
    	}
        else if(m<n)
        {
            a[m][n]=apple(m,m);
            return a[m][n];
        }
        else if(m==n)
        {
            a[m][n]=1+apple(m,m-1);
            return a[m][n];
        }
        else
        {
            a[m][n]=apple(m-n,n)+apple(m,n-1);
            return a[m][n];
        }
    } 
    int main()
    {
        int T,m,n;
        cin>>T;
        while(T--)
        {
            memset(a,0,sizeof(a));
            cin>>m>>n;
            cout<<apple(m,n)<<endl;
        }
        return 0;
    }
    

    Download as text

  • 相关阅读:
    vue 父子组件通信props/emit
    mvvm
    Ajax
    闭包
    【CSS3】---only-child选择器+only-of-type选择器
    【CSS3】---last-of-type选择器+nth-last-of-type(n)选择器
    【CSS3】---first-of-type选择器+nth-of-type(n)选择器
    【CSS3】---结构性伪类选择器—nth-child(n)+nth-last-child(n)
    【CSS3】---结构性伪类选择器-first-child+last-child
    vue路由切换和用location切换url的区别
  • 原文地址:https://www.cnblogs.com/163467wyj/p/6635794.html
Copyright © 2020-2023  润新知