美文网首页
week1的作业题 /模拟

week1的作业题 /模拟

作者: 大家好我是阿凉 | 来源:发表于2020-03-06 08:09 被阅读0次

    1.问题描述

    image.png
    image.png

    因为只需要做出对五种烷烃的判断

    所以其实需要做的只是找出五种不同的烷烃的特征(这里我选取的是五种烷烃最高的碳碳键的数目)
    首先观察2,2-dimethylbutane 单个碳原子最高生成的碳碳键的数目是4个,n-hexane则是两个(一条单链无分支),而剩下几种都是最高生成碳碳键的数目为三,再看其他三个的区别。

    2,3-dimethylbutane生成的三个碳碳键的碳原子所相邻的两个碳原子,分别有一个或三个碳碳键;2-methylpentane为一个或者两个碳碳键,而3-methylpentane生成的三个碳碳键的碳原子所相邻的两个碳原子上都有两个碳碳键。

    区别找到后我们就是应该统计全部的碳原子所含有的碳碳键,以及碳原子相邻的碳原子编号。
    完整代码就写了出来

    struct xunzhao
    {
        int tl;
        int times;
        int next[5];
    };
    

    用这样一个结构体记录每个碳原子,有它自己的碳碳键个数和一个临接数组(记录碳碳键相邻的碳原子编号,tl为此记录个数)
    然后完成统计和判断

    #include<iostream>
    #include<string>
    using namespace std;
    struct xunzhao
    {
        int tl;
        int times;
        int next[5];
    };
    xunzhao p[7];
    int a[5][2];
    int main() 
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            int max=0;
            int maxtl;
            for(int j=0;j<7;j++)
            {
                p[j].times=0;
            }
            for(int j=0;j<5;j++)
            {
                cin>>a[j][0]>>a[j][1];
                p[a[j][0]].next[p[a[j][0]].times]=a[j][1];
                p[a[j][1]].next[p[a[j][1]].times]=a[j][0];
                p[a[j][0]].times++;
                p[a[j][1]].times++;
                if(p[a[j][0]].times>max)
                {
                    max=p[a[j][0]].times;
                    maxtl=a[j][0];
                }
                if(p[a[j][1]].times>max)
                {
                    max=p[a[j][1]].times;
                    maxtl=a[j][1];
                }
                cout<<" "<<max<<endl;
            }
            for(int j=0;j<6;j++)
            {
                cout<<" "<<p[j].times<<endl;
            }
            if(max==4)
            {
                cout<<"2,2-dimethylbutane"<<endl;
            }
            else if(max==2)
            {
                cout<<"n-hexane"<<endl;         
            }
            else if(max==3)
            {
                if(p[p[maxtl].next[0]].times==3||p[p[maxtl].next[1]].times==3||p[p[maxtl].next[2]].times==3)
                {
                    cout<<"2,3-dimethylbutane"<<endl;
                    
                }
                else if(p[p[maxtl].next[0]].times+p[p[maxtl].next[1]].times+p[p[maxtl].next[2]].times==4)
                {
                    cout<<"2-methylpentane"<<endl;
                }
                else {
                    cout<<"3-methylpentane"<<endl;
                }
            }
        }
        return 0;
    }
    

    2.题目描述:


    看起来又是一道数据处理的题目,其实因为给分的方式都写的很明白,其实数据处理起来思路比上题更明确。

    观察数据的输入,是a(b) 0 a -a几种形式 需要统计的就是ac了多少道题(只有a(b) a两个需要统计)其他筛掉。。所以不妨用sscanf作一个筛选和数据处理。用“%d(%d)”来对数据做一下输入处理,拿到两个数(不一定有两个,但是sscanf有返回值可以直接判断拿到几个。拿不到两个数可以不处理)
    然后对数据进行统计(根据所给的罚时计算总罚时),然后有所有数据之后开开心心的……sort排序(sort自己写一个compare函数,方法就根据题目里面的)
    然后是代码

    #include<cstring>
    #include<iostream>
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    struct paixu
    {
        int AC;
        int fashi;
        char name[20];
    };
    paixu a[10000];
    bool compare(paixu &a,paixu &b)
    {
        if(a.AC>b.AC)
        {
            return 1;
        }
        else if(a.AC<b.AC)
        {
            return 0;
        }   
        else
        {
            if(a.fashi<b.fashi)
            {
                return 1;
            }
            else if(a.fashi>b.fashi)
            {
                return 0;
            }
            else
            {
                return 
                strcmp(a.name,b.name)<0;
            }
        }
        
        
    }
    int main()
    {
        int n,m,res;
        cin>>n>>m;
        char words[15];
        int i=0;
        while(~scanf("%10s",a[i].name))
        {
            a[i].AC=0;
            a[i].fashi=0;
            for(int j=0;j<n;j++)
            {
                scanf("%s",words);
                int t,f;
                int pession;
                //输入方式 
                pession=sscanf(words,"%d(%d)",&t,&f);
                if(pession==2)
                {
                    a[i].AC++;
                    a[i].fashi+=t;
                    a[i].fashi=a[i].fashi+f*m;
                }
                else if(pession==1&&t>0)
                {
                    a[i].AC++;
                    a[i].fashi+=t;
                }
            }
            i++;
        }
        //排序 
        sort(a,a+i,compare);
        for(int j=0;j<i;j++)
        {
            //对齐输出 
            printf("%-10s %2d %4d\n",a[j].name,a[j].AC,a[j].fashi);
        }
    }
    

    3.题目描述



    (预警:因为我对二位数组不太熟悉,这题出现大量的……代码,慎看)

    其实题目没什么难的,就是规定一个发牌的顺序(转圈圈),规定一个发牌点,然后依次的发牌,一个人发一张,带着花色带着面值(面值需要作一个转化),然后再排序。

    难点大概就是,排序函数。还有,转圈圈的统计方式(其实一个二维数组作一个膜系统最简单 but,开始我不知道二维数组该怎么sort,一上头,手写了一个巨复杂的绕圈圈)

    #include<cstring>
    #include<iostream>
    #include<stdio.h>
    #include<algorithm>
    #include<string>
    #include<map>
    using namespace std;
    struct pukepai
    {
        char huase;
        int mianzhi;
        char paimian;
    };
    int chars(char a)
    {
        if(a=='C'){return 1;}
        if(a=='D'){return 2;}
        if(a=='S'){return 3;}
        if(a=='H'){return 4;}
        
    }
    bool compare(pukepai &a,pukepai &b)
    {
        if(chars(a.huase)!=chars(b.huase))
            return chars(a.huase)<chars(b.huase);
        else
        {
            return a.mianzhi<b.mianzhi;
        }
    }
    int change(char t)
    {
        if(t=='A'){return 14;}
        if(t=='2'){return 2;}
        if(t=='3'){return 3;}
        if(t=='4'){return 4;}
        if(t=='5'){return 5;}
        if(t=='6'){return 6;}
        if(t=='7'){return 7;}
        if(t=='8'){return 8;}
        if(t=='9'){return 9;}
        if(t=='T'){return 10;}
        if(t=='J'){return 11;}
        if(t=='Q'){return 12;}
        if(t=='K'){return 13;}
    }
    int main()
    {
        
        int begin;
        char t;
        while(cin>>t)
        {
        
            pukepai pukepaiN[13];
            pukepai pukepaiS[13];
            pukepai pukepaiE[13];
            pukepai pukepaiW[13];
            
            
            if(t=='N')
            {
                //1是北; 
                begin=2;
            }
            else if(t=='E')
            {
                //2是东 
                begin=3;
            }
            else if(t=='S')
            {
                //3是南 
                begin=4;
            }
            else if(t=='W')
            {
                //4是西 
                begin=1;
            }
            else if(t=='#')
            {
                //4是西 
                break;
            }
            int il[4];
            for(int j=0;j<4;j++) {il[j]=0;}
            string x;
            cin>>x;
            int i=0;
            while(i<52)
            {
                if(begin==1)
                {
                    pukepaiN[il[0]].huase=x[i];
                    pukepaiN[il[0]].paimian=x[i+1];
                    pukepaiN[il[0]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[0]++;
                    if(i>=52) 
                        break;
                    pukepaiE[il[1]].huase=x[i];
                    pukepaiE[il[1]].paimian=x[i+1];
                    pukepaiE[il[1]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[1]++;
                    if(i>=52) 
                        break;
                    pukepaiS[il[2]].huase=x[i];
                    pukepaiS[il[2]].paimian=x[i+1];
                    pukepaiS[il[2]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[2]++;
                    if(i>=52) 
                        break;
                    pukepaiW[il[3]].huase=x[i];
                    pukepaiW[il[3]].paimian=x[i+1];
                    pukepaiW[il[3]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[3]++;
                }
                if(begin==2)
                {
                    pukepaiE[il[1]].huase=x[i];
                    pukepaiE[il[1]].paimian=x[i+1];
                    pukepaiE[il[1]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[1]++;
                    if(i>=52) 
                        break;
                    pukepaiS[il[2]].huase=x[i];
                    pukepaiS[il[2]].paimian=x[i+1];
                    pukepaiS[il[2]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[2]++;
                    if(i>=52) 
                        break;
                    pukepaiW[il[3]].huase=x[i];
                    pukepaiW[il[3]].paimian=x[i+1];
                    pukepaiW[il[3]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[3]++;    
                    if(i>=52) 
                        break;
                    pukepaiN[il[0]].huase=x[i];
                    pukepaiN[il[0]].paimian=x[i+1];
                    pukepaiN[il[0]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[0]++;
                }
                if(begin==3)
                {
                    pukepaiS[il[2]].huase=x[i];
                    pukepaiS[il[2]].paimian=x[i+1];
                    pukepaiS[il[2]].mianzhi=change(x[i+1]); 
                    if(i>=52) 
                        break;
                    i+=2;
                    il[2]++;
                    pukepaiW[il[3]].huase=x[i];
                    pukepaiW[il[3]].paimian=x[i+1];
                    pukepaiW[il[3]].mianzhi=change(x[i+1]); 
                    i+=2;
                    il[3]++;
                    if(i>=52) 
                        break;  
                    pukepaiN[il[0]].huase=x[i];
                    pukepaiN[il[0]].paimian=x[i+1];
                    pukepaiN[il[0]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[0]++;
                    if(i>=52) 
                        break;
                    pukepaiE[il[1]].huase=x[i];
                    pukepaiE[il[1]].paimian=x[i+1];
                    pukepaiE[il[1]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[1]++;
                }
                if(begin==4)
                {
                    pukepaiW[il[3]].huase=x[i];
                    pukepaiW[il[3]].paimian=x[i+1];
                    pukepaiW[il[3]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[3]++;    
                    if(i>=52) 
                        break;
                    pukepaiN[il[0]].huase=x[i];
                    pukepaiN[il[0]].paimian=x[i+1];
                    pukepaiN[il[0]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[0]++;
                    if(i>=52) 
                        break;
                    pukepaiE[il[1]].huase=x[i];
                    pukepaiE[il[1]].paimian=x[i+1];
                    pukepaiE[il[1]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[1]++;
                    if(i>=52) 
                        break;
                    pukepaiS[il[2]].huase=x[i];
                    pukepaiS[il[2]].paimian=x[i+1];
                    pukepaiS[il[2]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[2]++;
                }
            }
            cin>>x;
            i=0;
            begin=(begin+1)%4+1;
        //  1 2 3 4
            while(i<52)
            {
                if(begin==1)
                {
                    pukepaiN[il[0]].huase=x[i];
                    pukepaiN[il[0]].paimian=x[i+1];
                    pukepaiN[il[0]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[0]++;
                    if(i>=52) 
                        break;
                    pukepaiE[il[1]].huase=x[i];
                    pukepaiE[il[1]].paimian=x[i+1];
                    pukepaiE[il[1]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[1]++;
                    if(i>=52) 
                        break;
                    pukepaiS[il[2]].huase=x[i];
                    pukepaiS[il[2]].paimian=x[i+1];
                    pukepaiS[il[2]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[2]++;
                    if(i>=52) 
                        break;
                    pukepaiW[il[3]].huase=x[i];
                    pukepaiW[il[3]].paimian=x[i+1];
                    pukepaiW[il[3]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[3]++;
                }
                if(begin==2)
                {
                    pukepaiE[il[1]].huase=x[i];
                    pukepaiE[il[1]].paimian=x[i+1];
                    pukepaiE[il[1]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[1]++;
                    if(i>=52) 
                        break;
                    pukepaiS[il[2]].huase=x[i];
                    pukepaiS[il[2]].paimian=x[i+1];
                    pukepaiS[il[2]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[2]++;
                    if(i>=52) 
                        break;
                    pukepaiW[il[3]].huase=x[i];
                    pukepaiW[il[3]].paimian=x[i+1];
                    pukepaiW[il[3]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[3]++;    
                    if(i>=52) 
                        break;
                    pukepaiN[il[0]].huase=x[i];
                    pukepaiN[il[0]].paimian=x[i+1];
                    pukepaiN[il[0]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[0]++;
                }
                if(begin==3)
                {
                    pukepaiS[il[2]].huase=x[i];
                    pukepaiS[il[2]].paimian=x[i+1];
                    pukepaiS[il[2]].mianzhi=change(x[i+1]); 
                    if(i>=52) 
                        break;
                    i+=2;
                    il[2]++;
                    pukepaiW[il[3]].huase=x[i];
                    pukepaiW[il[3]].paimian=x[i+1];
                    pukepaiW[il[3]].mianzhi=change(x[i+1]); 
                    i+=2;
                    il[3]++;
                    if(i>=52) 
                        break;  
                    pukepaiN[il[0]].huase=x[i];
                    pukepaiN[il[0]].paimian=x[i+1];
                    pukepaiN[il[0]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[0]++;
                    if(i>=52) 
                        break;
                    pukepaiE[il[1]].huase=x[i];
                    pukepaiE[il[1]].paimian=x[i+1];
                    pukepaiE[il[1]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[1]++;
                }
                if(begin==4)
                {
                    pukepaiW[il[3]].huase=x[i];
                    pukepaiW[il[3]].paimian=x[i+1];
                    pukepaiW[il[3]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[3]++;    
                    if(i>=52) 
                        break;
                    pukepaiN[il[0]].huase=x[i];
                    pukepaiN[il[0]].paimian=x[i+1];
                    pukepaiN[il[0]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[0]++;
                    if(i>=52) 
                        break;
                    pukepaiE[il[1]].huase=x[i];
                    pukepaiE[il[1]].paimian=x[i+1];
                    pukepaiE[il[1]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[1]++;
                    if(i>=52) 
                        break;
                    pukepaiS[il[2]].huase=x[i];
                    pukepaiS[il[2]].paimian=x[i+1];
                    pukepaiS[il[2]].mianzhi=change(x[i+1]);
                    i+=2;
                    il[2]++;
                }
            }
            sort(pukepaiE,pukepaiE+13,compare);
            sort(pukepaiW,pukepaiW+13,compare);
            sort(pukepaiN,pukepaiN+13,compare);
            sort(pukepaiS,pukepaiS+13,compare);
            cout<<"South player:"<<endl;
            for(int tl=0;tl<13;tl++)
            {
                cout<<"+---";
            }
            cout<<"+"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<pukepaiS[p].paimian<<" "<<pukepaiS[p].paimian;
            }
            cout<<"|"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<" "<<pukepaiS[p].huase<<" ";
            }
            cout<<"|"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<pukepaiS[p].paimian<<" "<<pukepaiS[p].paimian;
            }
            cout<<"|"<<endl;
            for(int tl=0;tl<13;tl++)
            {
                cout<<"+---";
            }
            cout<<"+"<<endl;
            cout<<"West player:"<<endl;
            for(int tl=0;tl<13;tl++)
            {
                cout<<"+---";
            }
            cout<<"+"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<pukepaiW[p].paimian<<" "<<pukepaiW[p].paimian;
            }
            cout<<"|"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<" "<<pukepaiW[p].huase<<" ";
            }
            cout<<"|"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<pukepaiW[p].paimian<<" "<<pukepaiW[p].paimian;
            }
            cout<<"|"<<endl;
            for(int tl=0;tl<13;tl++)
            {
                cout<<"+---";
            }
            cout<<"+"<<endl;
            cout<<"Nouth player:"<<endl;
            for(int tl=0;tl<13;tl++)
            {
                cout<<"+---";
            }
            cout<<"+"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<pukepaiN[p].paimian<<" "<<pukepaiN[p].paimian;
            }
            cout<<"|"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<" "<<pukepaiN[p].huase<<" ";
            }
            cout<<"|"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<pukepaiN[p].paimian<<" "<<pukepaiN[p].paimian;
            }
            cout<<"|"<<endl;
            for(int tl=0;tl<13;tl++)
            {
                cout<<"+---";
            }
            cout<<"+"<<endl;
            cout<<"East player:"<<endl;
            for(int tl=0;tl<13;tl++)
            {
                cout<<"+---";
            }
            cout<<"+"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<pukepaiE[p].paimian<<" "<<pukepaiE[p].paimian;
            }
            cout<<"|"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<" "<<pukepaiE[p].huase<<" ";
            }
            cout<<"|"<<endl;
            for(int p=0;p<13;p++)
            {
                cout<<"|"<<pukepaiE[p].paimian<<" "<<pukepaiE[p].paimian;
            }
            cout<<"|"<<endl;
            for(int tl=0;tl<13;tl++)
            {
                cout<<"+---";
            }
            cout<<"+"<<endl;
        }
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:week1的作业题 /模拟

          本文链接:https://www.haomeiwen.com/subject/sunmrhtx.html