暨南大学2019年复试机试-03

格子涂色

题目描述:有一行格子(不超过20 格)现在有三种颜料:红,黄,蓝。要每一个格子里面涂一种颜色,使得相邻格子颜色不能相同,而且首尾格子颜色也不能相同。问有多少种涂法?
这个问题当时卡了很多人,我也是弄了25分钟才搞出来。
分析:考虑到第一格可以涂3种颜色,第二格可以涂两种,第三格也可以涂两种…最后一格由于不能与倒数第二格同色且不能与第一格同色,所以我们可以分两种情况:1.如果第n-1格与第1格同色,那么第n格则有两种涂法;2.如果第n-1格与第1格不同色,则第n格只有有一种涂法
很容易看出来第n格的涂法,与第n-1格的涂法有关系。
上面这种dp思想供大家参考。
下面的代码是我考试的时候写出来的,具体原理大家可以尝试画出4个格子的涂法,如果有精力可以画出5个格子的涂法,规律大家一看便知。

#include<stdio.h>
int  main(){
	int n;
	int dp[21];
	dp[1]=3;//只有一个格子时有3种涂法
	dp[2]=6;//有两个格子时有6种涂法 
	dp[3]=6;//易知第n-1(2)个格子和第1个格子相邻故一定是不同色的,所以第n(3)个格子只能涂一种颜色 
	for(int i=4;i<=21;i++){//依次计算4个格子的涂法总数,5个格子的涂法总数...... 
		dp[i]=3;
		for(int j=1;j<i-1;j++){//根据规律,i个格子的涂法总数为:3*2*2*2....(要乘i-2个2)+dp[i-2] 
				dp[i]*=2;
			}
		dp[i]+=dp[i-2];
	}
	while(scanf("%d",&n)!=EOF){
		printf("%d\n",dp[n]);
	}
	return 0;
} 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
来,计算机专业的就业形势日趋严峻,想要获得较好的职业发展,除了良好的基础学科素养和实践经验外,面试过程中的表现越发关键。武汉大学计算机专业的复试机试则是受到广泛关注的一种考核方式。 首先,很多同学可能对“机试”不太了解,其实机试就是计算机科学技术专业的实践能力测试,与传统面试不同的是,机试有利于考察学生的实际编程能力和解决问题的思维方法。 关于武汉大学计算机专业的机试,公开资料显示,其考核既注重基础理论知识,也注重实际应用能力。具体来说,机试分为两个方面:算法设计与编码和软件工程。 算法设计与编码考察了学生的基础算法设计能力,要求考生能够较好的解决从简单到复杂的实际算法问题,从而考察其分析问题和设计解决方案的能力。至于关于编码方面,则主要考察学生的口述和编写能力。 而软件工程部分的考核则是注重了解学生的团队合作能力和项目开发经验,要求考生从一线代码开始,能够独立处理系统的需求分析、方案设计、后端开发、前端开发等方面,并保证代码的可维护性和可扩展性,这一环节也重点关注其代码的速度和是否合理。 总体来说,无论是机试还是传统面试,掌握扎实的理论知识、保持良好的实战经验和积极进取的心态是准备机试的重要一步。此外,参加和传统面试不同类型的考核方式有助于学生不断提升自己的能力和水平,从而更好地适应未来的就业市场。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值