福州大学&东华大学 上机题目
第一题:打印出螺旋数组
要求:打印出螺旋矩阵,求第i行j列的数字,0<n<10000
输入格式:
输入螺旋矩阵的阶数n
输出格式:
输出螺旋矩阵
思路:
设元素1的坐标为(0,0),任意元素的坐标为(x,y) 也可以采用递归的方式,借助一个二维数组,从外圈算起,向内圈打印输出。
#define MAX 10000
int sprial[MAX][MAX];
void print_sprial(int x,int y,int num,int n){
if(n<=0){
return;
}
if(n==1){
sprial[x][y]=num;
return;
}//输入不合法的处理和递归边界
for(int i=x;i<x=n-1;i++){
sprial[y][i]=num++;
}
for(int i=y;i<y=n-1;i++){
sprial[y+n-1][i]=num++;
}
for(int i=x+n-1;i>x;i--){
sprial[y+n-1][i]=num++;
}
for(int i=y+n-1;i>y;i--){
sprial[i][x]=num++;
}//从外圈开始
print_sprial(x+1,y+1,num,n-2);//递归函数
}
int main(){
fill(sprial[0],sprial[0]+MAX*MAX,-1)
int n;
scanf("%d",&n);l
printf_sprial(0,0,1,n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
print("%5d",sprial[i][j]);
}
}
return 0;
}
第二题:畅通工程
要求:让全省任何两个城镇都可以实现沟通交流
输入格式:
每个测试的第一列给出两个正整数,分别是城镇数目N和道路数目M:随后的M对应M条道路,每行给出一对正整数,分别该条道路直接连通的两个城镇的编号。为简单起见,城镇从1到N编号。
输出格式:
对每个测试用例额,在一行输出最少的还需要建设数目
思路:
利用数学知识
int main(){
int m,n,a,b;
scanf("%d %d\n",&m,&n);
if(n!=0){
for(int i=0;i<n;i++){
scanf("%d %d\n",&a,&b);
}
printf("%d",m-n-1);//数学知识
}
return 0;
}
第三题:去除重复元素
要求:去除数值相同的元素,是数组中不再有重复的元素。
输入格式:
数组名称 a[]
输出格式:
不再有重复数值的数组即可
思路:
想用哈希真的数组中重复元素的个数,在利用辅助函数进行插入法插入到辅助元素当中,最后输出辅助元素。
#define MAX 10000
void deletechongfu(int A[],int length){
int hashtble[MAX],B[MAX];//一个哈希数组,一个辅助数组
int num=0;
for(int i=0;i<length;i++){
hshtable[A[i]]++;
if(hashtable[A[i]]>=2){
num++;//统计重复函数的个数
}
}
for(int j=0,int i=0;j<length);j++){
if(hashtable[A[j]]!=0){
printf("%d ",A[j]);
hashtable[A[j]]=0;//直接输出没有重复的函数
B[i]=A[j];
i++;
}
}
}
int main(){
int A[MAX];
int length;
scanf("%d",&length);
for(int i=0;i<length;i++){
scanf("%d ",&A[i]);
}
deletechongfu(A,length);
}
东华大学还有一道水仙花原题,篇幅有限。
参考书目
1.计算机软件相关专业复试指导 ————皮皮灰 2.2022年数据结构考研复试指导 ————王道论坛