华科软院复试2007-2017年上机题C++版本(下篇)

写在前面的话:
2019年华中科技大学软件学院的复试已经尘埃落定,为了机试也刷了一下历年的软院上机题,虽然并没有用到(2019年软院专硕没有上机),为了造福学弟学妹们,把自己写的代码放出来,仅供参考。
注:使用的c/c++编写的,由于篇幅较长,分为上篇和下篇,上篇为2017年——2013年真题,下篇为2012年——2007年真题加我自己拓展的一些跟历年真题类似的题目,代码中都含题目描述,其中2018年跟2019年软院没有机试,文末也放了pdf的链接供下载
祝都能考上自己心仪的学校!

2012-1-平方回文数(与2013-1相同)

2012-2-约瑟夫环

#include <iostream>
#include <string>
using namespace std;
/*========================================
约瑟夫环
一群人(排列的编号从 1 到 N,N 可以设定)围成一圈,按一定规则出列。剩余的人仍
然围成一圈,出列规则是顺着 1 到 N 的方向对圈内的人从 1 到 C 记数(C 可以设定)。圈内
记数为 C 的人出列。剩余的人重新计数。按上述规则,让圈内所有的人出列。请编程输出
出列编号的序列。
例:
若 N=3,C=1,则出列编号的序列为 1,2,3
若 N=3,C=2,则出列编号的序列为 2,1,3
分析:
方法一:链表,麻烦,省略
方法二:循环数组,
循环条件为:index = (index + 1) % count
初始alive = count,每出圈一个,alive --,
循环结束条件为:alive > 0
每一次循环,就是过一个人,该人在圈内还是圈外,圈内number++,圈外number不变,
故定义一数组circle[count],记录该编号是已出圈还是未出圈,圈内为0,圈外为1
number = number + 1 - circle[index]

malloc()只分配内存,

猜你喜欢

转载自blog.csdn.net/Shine_rise/article/details/88615618