zoukankan      html  css  js  c++  java
  • 练习整理(2)

    门禁系统:

    #include <bits/stdc++.h>
    using namespace std;
    //记录当前出现几次 
    
    int a[1000]={0};
    int main()
    {
        int n,t;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>t;
            a[t]++;
            cout<<a[t]<<" ";
        }
        return 0;
    } 

    碰撞的小球:

    #include <bits/stdc++.h>
    using namespace std;
    
    int x[101];
    int v[101];
    int main()
    {
        int n,l,t;
        cin>>n>>l>>t;
        for(int i=1;i<=n;i++)
        {
            cin>>x[i];
            v[i]=1;
            if(x[i]==l||x[i]==0)
              v[i]=-v[i];
        }
        for(int i=0;i<t;i++)
        {
            for(int j=1;j<=n;j++)
            {
                x[j]+=v[j];
                if(x[j]==l||x[j]==0)
                  v[j]=-v[j];
            }
            for(int j=1;j<n;j++)
            {
                for(int f=j+1;f<=n;f++)
                {
                    if(x[j]==x[f])
                    {
                        v[j]=-v[j];
                        v[f]=-v[f];
                    }
                }
            }
        }
        for(int i=1;i<=n;i++)
        {
            cout<<x[i]<<" ";
        }
        return 0;
    } 

    日期计算:

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int main()
    {
        int y,d,month=0,day;
        int sum=0;
        cin>>y>>d;
        if((y%4==0&&y%100!=0)||(y%400==0))
        {
            a[2]=29;
        }
        for(int i=1;i<13;i++)
        {
            if(d-a[i]>0)
            {
                month++;
                d-=a[i];
            }
            else
            {
                month++; 
                day=d;
                break;
            }        
        }
        cout<<month<<endl;
        cout<<day<<endl;
        return 0;
    } 

    数列分段:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int n,a,b,result=1;
        cin>>n;
        cin>>a;
        for(int i=1;i<n;i++)
        {
            cin>>b;
            if(b!=a)result++;
            a=b;
        }
        cout<<result;
        return 0;
    } 

    数位之和:

    #include <bits/stdc++.h>
    using namespace std;
    
    //数位之和:用字符串做->简化 
    int main()
    {
        string n;
        int result=0;
        cin>>n;
        for(int i=0;i<n.length();i++)
        {
            result+=n[i]-'0';
        } 
        cout<<result;
        return 0;
    }

    数字排序:

    #include <bits/stdc++.h>
    using namespace std;
    
    struct node
    {
        int key;
        int num;
    };
    
    bool cmp(node v1,node v2)
    {
        if(v1.num!=v2.num)
          return v1.num>v2.num;
        else if(v1.num==v2.num)
          return v1.key<v2.key;
    }
    int main()
    {
        vector<node> v;
        map<int,int> m;
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            int temp;
            cin>>temp;
            m[temp]++;
        }
        for(map<int,int>::iterator it=m.begin();it!=m.end();it++)
        {
            node temp;
            temp.key=it->first;
            temp.num=it->second;
            v.push_back(temp);
        }
        sort(v.begin(),v.end(),cmp);
        for(vector<node>::iterator it=v.begin();it!=v.end();it++)
        {
            cout<<it->key<<" "<<it->num<<endl;
        }
        return 0;
    } 

    跳一跳:

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[30]={0}; 
    int main()
    {
        int t;
        int flag;
        int score=0;
        cin>>t;
        flag=1;
        while(t!=0)
        {
            if(t==1)//跳至方格边缘 
            {
                score+=1; 
                flag=1;
            }
            else if(t==2)//跳至方格中心 
            {
                if(flag==1)score+=2;
                else score+=(2*flag);
                flag++;
            }
            cin>>t;
        }
        cout<<score;
        return 0;
    } 

    图像旋转:

    #include <bits/stdc++.h>
    using namespace std;
    //(i,j)->(m-j-1,i)
    int a[1000][1000];
    int main()
    {
        int n,m;
        cin>>n>>m;
        for(int i=0;i<n;i++)
           for(int j=0;j<m;j++)
              cin>>a[i][j]; 
        for(int i=0;i<m;i++)
        {
           for(int j=0;j<n;j++)
              cout<<a[j][m-i-1]<<" ";
           cout<<endl;
        }
        return 0;
    } 

    相反数:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        set<int> st;
        int n,x,result=0;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>x;
            st.insert(x);
            if(st.count(-x)==1)
            {
                result++;
            }
        }
        cout<<result;
        return 0;
    } 

    相邻数对:

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[1000]={0};
    int main()
    {
        int n,result=0,t;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
        }
        sort(a,a+n);
        for(int i=0;i<n-1;i++)
        {
            if(a[i]+1==a[i+1])result++;
        }
        cout<<result;
        return 0;
    } 

    消除类游戏:

    #include <bits/stdc++.h>
    using namespace std;
    //颜色1-9编号 
    int a[30][30];
    int main()
    {
        int n,m;
        cin>>n>>m;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                cin>>a[i][j];
            }
        }
        //行中消除
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m-2;j++)
            {
                if(abs(a[i][j])==abs(a[i][j+1])&&abs(a[i][j])==abs(a[i][j+2]))
                {
                    if(a[i][j]>0)
                    a[i][j]=-a[i][j];
                    if(a[i][j+1]>0)
                    a[i][j+1]=-a[i][j+1];
                    if(a[i][j+2]>0)
                    a[i][j+2]=-a[i][j+2];
                }
            }
        } 
        //列中消除
        for(int j=0;j<m;j++)
        {
            for(int i=0;i<n-2;i++)
            {
                if(abs(a[i][j])==abs(a[i+1][j])&&abs(a[i][j])==abs(a[i+2][j]))
                {
                    if(a[i][j]>0)
                    a[i][j]=-a[i][j];
                    if(a[i+1][j]>0)
                    a[i+1][j]=-a[i+1][j];
                    if(a[i+2][j]>0)
                    a[i+2][j]=-a[i+2][j];
                }
            }
        }
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(a[i][j]<0)a[i][j]=0;
                cout<<a[i][j]<<" ";
            } 
            cout<<endl;
        }
        return 0;
    } 

    学生排队:

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[1001];
    int main()
    {
        int n,m,p,q,index;
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            a[i]=i;
        }
        for(int i=0;i<m;i++)
        {
            cin>>p>>q;
            for(int j=1;j<=n;j++)
            {
                if(a[j]==p)
                  index=j;
            }
            if(q>0)
            {
                for(int j=0;j<q;j++)
                {
                    a[j+index]=a[j+index+1];
                }
                a[index+q]=p;
            }
            else
            {
                for(int j=0;j<-q;j++)
                {
                    a[index-j]=a[index-j-1];
                }
                a[index+q]=p;
            }
        }
        for(int i=1;i<=n;i++)
        {
            cout<<a[i]<<" ";
        }
        return 0;
    } 

    游戏:

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[1001]={0};
    int main()
    {
        int n,k,result;
        cin>>n>>k;
        int sum=0;
        int t=0;
        while(t!=n-1)
        {
            for(int i=1;i<=n;i++)
            {
                if(a[i]==0)
                {
                    sum++;
                    if(t==n-1) break;                
                    if(sum%k==0||sum%10==k)
                    {
                        a[i]=1;
                        t++;
                    }
                }
            }
        }
        for(int i=0;i<=n;i++)
        {
            if(a[i]==0)result=i;
        }
        cout<<result; 
        return 0;
    } 
    
     

    折点计数:

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[1000];
    int main()
    {
        int n,result=0;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
        }
        for(int i=1;i<n-1;i++)
        {
            if((a[i]>a[i-1]&&a[i]>a[i+1])||(a[i]<a[i-1]&&a[i]<a[i+1]))
              result++;
        }
        cout<<result;
        return 0;
    } 

    中间数:

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[1001];
    int main()
    {
        int n;
        int result;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        sort(a+1,a+n+1);
        int t=a[n/2+1];
        int less=0,more=0;
        for(int i=1;i<=n;i++)
        {
            if(a[i]<t)less++;
            if(a[i]>t)more++;
        }
        if(less==more)result=t;
        else result=-1;
        cout<<result;
        return 0;
    } 

    最大波动:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int n,a,b;
        cin>>n;
        int max=0;
        cin>>a;
        for(int i=1;i<n;i++)
        {
            cin>>b;
            if(fabs(a-b)>max) max=fabs(a-b);
            a=b;
        }
        cout<<max;
        return 0;
    } 

    最小差值:

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[1000];
    int main()
    {
        int n;
        cin>>n;
        int min=2147483647,maxIndex;
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
        }
        for(int i=0;i<n-1;i++)
        {
            for(int j=i+1;j<n;j++)
            {
                if(fabs(a[i]-a[j])<min)
                   min=fabs(a[i]-a[j]);
            }
        }
        cout<<min;
        return 0;
    }
  • 相关阅读:
    python_捕获异常
    requests二次封装_捕获异常
    python_flask模块
    python_redis模块
    python_requests模块
    使用pstack和gdb调试死锁
    如何编写go代码
    GDB调试命令手册
    core文件相关
    shared_ptr的线程安全性
  • 原文地址:https://www.cnblogs.com/precious112/p/14719963.html
Copyright © 2011-2022 走看看