手把手入门+结构体排序+简单递归教学

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;
}