第二周实验:
A-
化学:
通过输入原子之间的化学键来区别五种不一样的烷烃基
思路:观察五种烷烃基,发现他们之间的区别,利用到图中各点的度数来进行区分
①
n-hexane 中最大度数为2,这可以将它与其他区分开来
②
2- methylpentane中最大度数为3,只有一个点
③
3- methylpentane 中最大度数为3,只有一个点(此时出现相同特征无法区分)
④
2,3- dimethylbtane中最大度数为3,有两个点(可以通过读书为3的点有两个区分)
⑤
2,2 dimethylbtane
中最大度数为4,也可唯一确定
那么我们再次观察③和④,发现③中存在的两条边一边链接度数为1的点另一边链接度数最大的点,而④中不存在这样的点,即可区分
用以上方法进行输入以及统计各个点的度用count数组表示
以上统计出最大点的度数
可以区分出②和⑤
如果最大度数为3
如果有两个点度数都为3,则判断出来
如果都为1的话则通过以下函数判断:
B-
罚时排名
首先明白每个人的罚时的计算方法,每道题如果是正数则表示ac所用时间,如果是负数表示还没ac,这部分不用加进去。如果是一个正数接着一个括号,括号内则为他的错误提交次数,这部分作为罚时计算进去。
例如:
他的成绩为:96+40+1+3*20=197
思路:因为输入的学生人数没提前告诉,则需要
来判断是否还有输入
用sscanf来判断读到的数的个数,如果是两个则说明存在罚时需要计算,如果只读到一位数需要判断正负,如果是负数则不需要相加。
接着就是排序问题,先按照ac的题目数,再次是罚时,然后再是字典序,排序函数如下:
C-打牌游戏
题目描述:四个人按东南西北顺序坐下,顺时针发牌,指定发牌人发牌时从顺时针下一位开始发,然后将四个人的牌按花色排序,C<D<S<H,然后再按照大小排序2<3<4<5<6<7<8<9<T<J<Q<K<A
思路:
首先写出他的排序方式,排序函数如图:(由于map掌握不太好,就暴力写了)
注意:在排列大小时,要在if(a.hua==b.hua)的情况下排序
然后就是发牌,将E S W N分别对应0
1 2 3,输入发牌者之后,得到第一个拿牌者,然后将牌分到四个人手中,代码如下:
作业:
①
迷宫问题
典型的bfs问题,利用队列进行搜索,每到一个点,对他的上下左右分别进行搜索,如果搜索到不为边界,没有走过i,以及可以通行,则标记该点,用path记录,最后,当走到4,4时即表明走到了出口
最后递归输出,也可以记录前一个点(我没用这种方法)
一定一定要注意省题(又因为逗号后的空格改了很久)。。。。。。。
②
倒水问题
这道题目看起来比较容易但是其实很复杂(尤其是对我这种贼粗心的人来说)
第一看错题觉得是都要装满。。。然后就two thousands later。。。
瓶子a或b装c水,其实如果能把a的情况考虑完全,则B完全同理
操作有:1,倒空A
2.倒满A(这里需要考虑是倒空B还是没有)
同样用到bfs对各个情况考虑,用map记录当前状态和上一状态,直到
完成。
最后同样递归输出: