zoukankan      html  css  js  c++  java
  • 手把手入门+结构体排序+简单递归教学

    hdu2019:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=110;
    int a[maxn];
    int main()
    {
        int N,x;
        while(~scanf("%d%d",&N,&x)){
            if(N==0&&x==0) break;
            N++; a[N]=x;
            for(int i=1;i<N;i++) scanf("%d",&a[i]);
            sort(a+1,a+N+1);
            for(int i=1;i<N;i++) printf("%d ",a[i]);
            printf("%d
    ",a[N]);
        }
        return 0;
    }

     hdu2020:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=110;
    int a[maxn];
    bool cmp(int w,int v){
        return abs(w)>abs(v);
    }
    int main()
    {
        int N;
        while(~scanf("%d",&N)){
            if(N==0) break;
            for(int i=1;i<=N;i++) scanf("%d",&a[i]);
            sort(a+1,a+N+1,cmp);
            for(int i=1;i<N;i++) printf("%d ",a[i]);
            printf("%d
    ",a[N]);
        }
        return 0;
    }

     hdu:1070:

    #include<bits/stdc++.h>
    using namespace std;
    struct milk{
        char name[110];
        int p,v;
        double xjb;
    }a[110];
    int cmp(milk x,milk y)
    {
        if(x.xjb!=y.xjb) return x.xjb<y.xjb;
        return x.v>y.v;
    }
    int main()
    {
        int n,i,m;
        scanf("%d",&n);
        while(n--)
        {
            scanf("%d",&m);
            for(i=0;i<m;i++)
            {
                scanf("%s%d%d",a[i].name,&a[i].p,&a[i].v);
                if(a[i].v>1200) a[i].xjb=1.0*a[i].p/1200;
                else a[i].xjb=1.0*a[i].p/a[i].v;
            }
            sort(a,a+m,cmp);
            for(i=0;i<m;i++)
            {
                if(a[i].v<200) continue;
                else
                {
                    printf("%s
    ",a[i].name);
                    break;
                }
            }
        }
        return 0;
    }

     hdu2046:

    非递归版本:

    #include<bits/stdc++.h>
    using namespace std;
    long long dp[110];
    int main()
    {
        dp[1]=1; dp[2]=2;
        for(int i=3;i<=50;i++) dp[i]=dp[i-1]+dp[i-2];
        int N;
        while(~scanf("%d",&N)){
            printf("%lld
    ",dp[N]);
        }
        return 0;
    }

    递归版本:

    #include<bits/stdc++.h>
    using namespace std;
    long long ans,dp[60];
    long long get(int x)
    {
        if(dp[x]) return dp[x];
        if(x==1) return 1;
        if(x==2) return 2;
        return dp[x]=get(x-1)+get(x-2);
    }
    int main()
    {
        int N;
        while(~scanf("%d",&N)){
            ans=get(N);
            printf("%lld
    ",ans);
        }
        return 0;
    }

     hdu1241:简单搜索。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=110;
    char a[maxn][maxn]; int vis[maxn][maxn],N,M,ans;
    int x[8]={1,1,1,0,0,-1,-1,-1};
    int y[8]={1,0,-1,-1,1,1,0,-1};
    void dfs(int u,int v){
        if(u>N||u<1||v>M||v<1) return ;
        vis[u][v]=1;
        for(int i=0;i<8;i++)
          if(a[u+x[i]][v+y[i]]=='@'&&!vis[u+x[i]][v+y[i]])
            dfs(u+x[i],v+y[i]);
    }
    int main()
    {
        while(~scanf("%d%d",&N,&M)){
            if(N==0&&M==0) break;
            ans=0; memset(vis,0,sizeof(vis));
            for(int i=1;i<=N;i++) scanf("%s",a[i]+1);
            for(int i=1;i<=N;i++){
                for(int j=1;j<=M;j++){
                    if(!vis[i][j]&&a[i][j]=='@'){
                        ans++;
                        dfs(i,j);
                    }
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }

     hdu2049:

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int maxn=1000010;
    int vis[maxn]; ll CC[30][30],DD[30];
    ll C(int n,int m)
    {
        if(n<0||(n<m)||m<0) return 0;
        if(CC[n][m]) return CC[n][m];
        if(m==0) return 1;
        return CC[n][m]=C(n-1,m)+C(n-1,m-1);
    }
    ll D(int x)
    {
        if(D[x]) return D[x];
        if(x==2) return 1;
        if(x==1) return 0;
        return D[x]=(ll)(x-1)*(D(x-1)+D(x-2));
    }
    int main()
    {
        int N,M,T; ll ans;
        scanf("%d",&T);
        while(T--){
            scanf("%d%d",&N,&M);
            ans=D(M)*C(N,N-M);
            printf("%lld
    ",ans);
        }
        return 0;
    }

     hdu2037:

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<memory.h>
    #include<algorithm>
    using namespace std;
    struct in
    {
        int x,y;
    }a[110];
    bool cmp(in a,in b)
    {
        if(a.y==b.y) return a.x>b.x;
        return a.y<b.y;
    }
    int main()
    {
        int n,i,j,ans,temp;
        while(cin>>n){
            if(n==0) return 0;
            for(i=1;i<=n;i++) cin>>a[i].x>>a[i].y;
            sort(a+1,a+n+1,cmp);
            ans=1;
            temp=a[1].y;
            for(i=2;i<=n;i++){
                 if(a[i].x>=temp){
                        ans++;
                        temp=a[i].y;
                 } 
            }
            cout<<ans<<endl;
        }
        return 0;
    }
  • 相关阅读:
    理解JAVA常量池
    java存储位置经典例子
    java通过句柄访问对象
    常用排序算法小结
    String,StringBuffer与StringBuilder的区别
    BGP
    BGP
    python编码问题实例
    从一段代码学习二叉树
    二叉树学习笔记--先序遍历
  • 原文地址:https://www.cnblogs.com/hua-dong/p/9915797.html
Copyright © 2011-2022 走看看