實驗week2 A 化學

2021-10-03 10:07:56 字數 1538 閱讀 8180

題目描述:

化學很神奇,以下是烷烴基。

假設如上圖,這個烷烴基有6個原子和5個化學鍵,6個原子分別標號1~6,然後用一對數字 a,b 表示原子a和原子b間有乙個化學鍵。這樣通過5行a,b可以描述乙個烷烴基

你的任務是甄別烷烴基的類別。

原子沒有編號方法,比如12 23 34 45 56和13 23 24 45 56是同一種,本質上就是一條鏈,編號其實是沒有關係的,可以在紙上畫畫就懂了。

可以運用暴力解法,題目只需要我們鑑別這五種烷烴基,故找出這五種烴基的區別即可,即對於每一種烷烴基,找出能唯一區分它的特徵。

解題思路;

我的區分方法是「原子鄰居法」,即找出六個原子中最受歡迎的原子(即與之相連的原子最多),稱之為原子c位(原子c位可能不止乙個),原子c位的鄰居數為c鄰居數,此外,端原子(只有乙個鄰居)也是一種輔助區分方法,仔細觀察這五種烷烴基,可以發現:

n-hexane的c鄰居數為2,

2,2-dimethylbutane的c鄰居數為4

其餘三種的c鄰居數為3

如何區分這三種呢,

2,3-dimethylbutane有兩個原子c位

3-methylpentane的原子c位有1個端原子鄰居

2-methylpentane的原子c位有2個端原子鄰居

至此,五種烷烴基能夠完全區分。

(區分方法還有很多,思考還能得出很多種原子鄰居區分法)

實驗**:

```cpp

#include

using

namespace std;

intmain

(void);

//陣列表示兩兩原子間是否相連

int arr[7]

=;//記錄每個原子與多少個原子相連

for(

int i=

0;i<

5;i++

)//找出max

int max=0;

//記錄c鄰居數

int maxnum=1;

//記錄原子c位個數

int maxi=0;

//記錄原子c位序號

for(

int i=

0;i<=

6;i++

)else

if(arr[i]

==max)

maxnum++;}

//判斷

if(max==2)

cout<<

"n-hexane"

<

else

if(max==4)

cout<<

"2,2-dimethylbutane"

<

else

//max==3}}

return0;

}

Week2實驗 A 化學

問題描述 有六個原子,其中原子隨意編號,給定五條原子之間相連的邊,判斷輸入結構是下圖的哪一種 思路 很顯然可以用每個原子的度來判斷,但是有兩個結構的最大度數都是3,3 methy 和 2 methy 進一步判斷發現3 methy連線了兩個度為2的原子,根據此就能區分這兩個。最初的 比較繁瑣,後來經過...

Week2實驗 A 化學 模擬

包含6個原子和5個化學鍵的烷烴基共有5種,用1 6標號6個原子,然後用一對數字a,b表示原子a和原子b之間有乙個化學鍵。給定5行a,b,判斷出它的類別,輸出其化學名稱 見下圖 原子沒有標號方法,即同乙個原子可能標號為1,也可能為2,依次類推。首先找出5種類別之間較大的區別 n 類的各原子鍵數分別為1...

Week2實驗A題 化學

化學很神奇,以下是烷烴基。你的任務是甄別烷烴基的類別。原子沒有編號方法。輸入 輸入第一行為資料的組數t 1 t 200000 每組資料有5行,每行是兩個整數a,b 1 a,b 6,a b 資料保證,輸入的烷烴基是以上5種之一 輸出 每組資料,輸出一行,代表烷烴基的英文名 樣例 input 21 2 ...