题意介绍
六个原子分别编号,根据六个原子的连接方式,判断属于哪一类烷烃,输出名字
题意分析
将一个个原子抽象成一个个点,根据每一个节点的度数判断属于哪一类烷烃。
n-hexane:1,2,2,2,2,1;
2,3-dimethylbutane:1,1,3,3,1,1;
2,2-dimethylbutane:1,1,1,4,2,1;
2-methylpentane:1,2,3,2,1,1;
3-methylpentane:1,2,3,2,1,1;
有分析可知,3-methylpentane和2-methylpentane具有相同的节点度数,其余三种各不相同,因此可以根据所给烷烃的节点度数判断出前三种烷烃,如果不属于前三种,再判断它属于后两种中的哪一种,观察后两种烷烃的结构发现,3-methylpentane中度数为3的节点相连的三个节点的度数分别为2,2,1,而2-methylpentane中度数为3的节点相连的三个节点的度数分别为1,1,2。由此可以判断出所给烷烃究竟属于哪一种。
通过代码
#include
using namespace std;
int num[7];
struct pa {
int a, b;
};
int main() {
int T;
cin >> T;
while (T–) {
pa p[5];
for (int i = 0; i < 5; i++) {
cin >> p[i].a >> p[i].b;
num[p[i].a]++;
num[p[i].b]++;
}
int count = 0;
for (int i = 1; i < 7; i++) {
if (num[i] == 2)
count++;
} if (count == 4) cout << “n-hexane” << endl;
else if (count == 1) cout << “2,2-dimethylbutane” << endl;
else if (count == 0) cout << “2,3-dimethylbutane” << endl;
else {
int i;
for ( i = 1; i < 7; i++) {
if (num[i] == 3) break;
}
int count2 = 0;
for (int j = 0; j < 5; j++) {
if ((p[j].a == i && num[p[j].b] == 2) || (p[j].b == i && num[p[j].a] == 2)) count2++;
}
if (count2 == 2) cout << “3-methylpentane” << endl;
else cout << “2-methylpentane” << endl;
} for (int i = 1; i < 7; i++) num[i] = 0; }
}