程序设计思维与实践 Week2 实验

本文介绍了在程序设计中如何运用图论解决烷烃基分类问题,以及如何通过多关键字排序解决学生成绩实时排名问题。文章通过A、B、C三个实验,分别展示了BFS算法在图论中的应用,C++中多关键字排序的实现,以及地图发牌问题的解决方案。
摘要由CSDN通过智能技术生成

A-化学

题意:
根据不同的烷烃基,通过5行a,b描述一个烷烃基。根据输入的烷烃基原子编号,甄别烷烃基的类别。组数T(1≤T≤200000),序号a,b(1≤a,b≤6,a ≤b)。数据保证输入的烷烃基是以上5种之一。
思路:
筛选不同的烷烃基,首先就需要理清不同的烷烃基之间的区别。简单分析后,发现不同烷烃基原子的度是不同的。因此可以采用图论的方法进行分析。

  • n-hexane每个原子的度都小于等于2。
  • 2-methylpentane和3-methylpentane都有且仅有一个3度节点。
    而这两种烷烃基的3度节点所连接的节点的度是不同的。
    2-methylpentane的三度节点连接了1个2度节点和2个1度节点。
    3-methylpentane的三度节点连接了2个2度节点和1个1度节点。
  • 仅有2,2-dimethylbutane有4度节点。
  • 2,3-dimethylbutane有2个3度节点。
    根据这种不同,可以很好的筛选出不同的烷烃基。采用数组描述图的方法,利用bfs计算图中每个原子的度,根据度的差异筛选烷烃基,顺利通过。

总结:
做这道题时,其实很容易想出根据原子的度不同对不同的烷烃基进行筛选,但是如何筛选2-methylpentane和3-methylpentane着实难到了我。刚开始我居然认为它们没有差别,仔细的思考才弄清了思路。得到了准确的思路后,写代码倒不是一件很难的事情。计算节点度数已是老生常谈的问题。

代码:

#include<iostream>
#include<cstdio>
int temp[6][6];
int main()
{
   
	int t;scanf("%d",&t);
	for(int k = 0;k < t;k++)
	{
   
		for(int i=0;i<6;i++)
			for(int j=0;j<6;j++)
				temp[i][j]=0;
		for(int j = 0;j<5;j++)
		{
   
			int x,y;
			scanf("%d%d",&x,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值