Week2實驗 A 化學

2022-06-13 12:24:09 字數 2115 閱讀 2252

問題描述:

有六個原子, 其中原子隨意編號, 給定五條原子之間相連的邊, 判斷輸入結構是下圖的哪一種

思路:很顯然可以用每個原子的度來判斷,但是有兩個結構的最大度數都是3,"3-methy"和"2-methy", 進一步判斷發現3-methy連線了兩個度為2的原子, 根據此就能區分這兩個。最初的**比較繁瑣,後來經過code review借鑑學習了一下,發現可以使用乙個二維陣列degree,其中degree[i][j]==k表示度為i的點連線了度為j的點,整個結構中有k個這樣的邊(但是如果i==j,整個結構中只有k/2個這樣的邊,因為被算了兩次,見程式)。用degree陣列能直接區分五種情況。

普通的抽象是考慮點的度,更高的抽象是考慮各個點的度之間的關係

兩點總結:

1.問題抽象層次越高越好,問題的低層抽象大部分人都能想到,應該在已經抽象的基礎上進一步探索,這樣處理問題就會更簡潔。

2.開始學習使用vector,我發現vector提供的介面很方便程式設計

**:最初版本:

1

/*a陣列儲存邊,count儲存點的度

*/2 #include 3 #include 4

using

namespace

std;

5int a[6][3];6

int count[10];7

int func(int

max)8;

15int tot=0;16

for(int i=1;i<=6;i++)

17if(count[i]==1) b[++tot]=i;

18//

統計與3相連的有幾個度為1的點

19 tot=0;20

for(int j=1;j<=3;j++)

2127

} 28

if(tot==2) cout<

2-methylpentane

"<

29else cout<

3-methylpentane

"<

31int

main()

3247

//統計count中的最大值

48int max_=-1;49

for(int i=1;i<=6;i++)

50if(count[i]>max_) max_=count[i];

51//

對最大值討論,特殊情況是最大值3

52if(max_==2) cout<

n-hexane

"<

53else

if(max_==4) cout<

2,2-dimethylbutane

"<

54else

if(max_==3)55

65}66}

67return0;

68 }

view code

總結修改後版本:

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;67

char s[20]=;

8 vector v[10];9

int deg[10][10

];10

intmain()

1127

for(int i=1;i<=6;i++)

28*/

34//

用range-for簡寫

35for(auto x:v[i]) deg[ v[i].size() ] [ v[x].size() ] ++;36}

37if(deg[4][1]==3) cout<3]<

38else

if(deg[3][1]==4) cout<4]<

39else

if(deg[3][1]==2) cout<0]<

40else

if(deg[3][1]==1) cout<1]<

41else cout<2]<

43return0;

44 }

view code

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 ...

A 化學(Week2 模擬)

題目敘述 化學很神奇,以下是烷烴基。假設如上圖,這個烷烴基有6個原子和5個化學鍵,6個原子分別標號1 6,然後用一對數字 a,b 表示原子a和原子b間有乙個化學鍵。這樣通過5行a,b可以描述乙個烷烴基 你的任務是甄別烷烴基的類別。原子沒有編號方法,比如 1 22 3 3 44 5 5 6和 1 32...