1.问题描述
image.pngimage.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;
}
网友评论