码迷,mamicode.com
首页 > 其他好文 > 详细

华中科技大学_2006保研___考研计算机_复试上机

时间:2019-04-24 16:12:20      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:--   name   soft   mil   class   考研   iostream   假设   pac   

1,排序

题目描写叙述:

? ? 对输入的n个数进行排序并输出。

输入:

? ? 输入的第一行包含一个整数n(1<=n<=100)。


? ? 接下来的一行包含n个整数。

输出:

? ? 可能有多组測试数据,对于每组数据。将排序后的n个整数输出,每一个数后面都有一个空格。
? ? 每组測试数据的结果占一行。

例子输入:
4
1 4 3 2
例子输出:
1 2 3 4 
总结:这个题目太简单了,实在想不到保研会考这样的题目,当然我用的也是最简单的冒泡排序,并且还是没优化的。shame。

#include<iostream>
using namespace std;

int main(){
	int n,i,j;
	int swap;
	int arr[101];

	while(cin>>n){
		for(i=0;i<n;i++){
			cin>>arr[i];
		}
		
		for(i=0;i<n;i++){
			for(j=0;j<n-1-i;j++){
				if(arr[j] > arr[j+1]){
					swap=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=swap;
				}
			}
		}
		
		for(i=0;i<n;i++){
			cout<<arr[i]<<" ";
		}
		cout<<endl;
	}

	return 0;
}

总结:感觉没什么,高速排序还是有些难度。可是掌握一前一后两个指针之后。也没什么。

#include<iostream>
using namespace std;

//高速排序的划分
int partion_arr(int arr[],int i,int j){
	int x=arr[i];

	while(i<j){
		while(i<j && x <= arr[j]){
			j--;
		}
		if(i<j){
			arr[i]=arr[j];
			i++;
		}

		while(i<j && x >= arr[i]){
			i++;
		}
		if(i<j){
			arr[j]=arr[i];
			j--;
		}
	}

	arr[i] = x;
	return i;
}

//高速排序
void quick_sort(int arr[],int i,int j){
	if(i<j){
		int a = partion_arr(arr,i,j);
		quick_sort(arr,a+1,j);
		quick_sort(arr,i,a-1);
	}
}

int main(){
	int n,i;
	int arr[101];

	while(cin>>n){
		for(i=0;i<n;i++){
			cin>>arr[i];
		}
		
		quick_sort(arr,0,n-1);
		
		for(i=0;i<n;i++){
			cout<<arr[i]<<" ";
		}
		cout<<endl;
	}

	return 0;
}


2,IP地址

题目描写叙述:

? ? 输入一个ip地址串。推断是否合法。

输入:

? ? 输入的第一行包含一个整数n(1<=n<=500),代表以下会出现的IP地址的个数。
? ? 接下来的n行每行有一个IP地址,IP地址的形式为a.b.c.d。当中a、b、c、d都是整数。

输出:

? ? 可能有多组測试数据,对于每组数据,假设IP地址合法则输出"Yes!”,否则输出"No!”。

例子输入:
2
255.255.255.255
512.12.2.3
例子输出:
Yes!
No!
提示:

合法的IP地址为:
a、b、c、d都是0-255的整数。

总结:这个一開始没有做出来。一直在string上思考,c++上做,原来用c的scanf读取。一下就好了,被秒了。

#include<stdio.h>

int main(){
	int n;
	while(~scanf("%d",&n) && (n>=1 && n<=500)){
		int num[4];
		while(n--){
			bool flag = true;
			scanf("%d.%d.%d.%d",&num[0],&num[1],&num[2],&num[3]);
			
			for(int i=0;i<4;i++){
				if(!(num[i]>=0 && num[i]<=255)){
					flag = false;
					break;
				}
			}

			if(flag){
				printf("Yes!\n");
			}else{
				printf("No!\n");
			}
		}
	
	}
	

	return 0;
}


华中科技大学_2006保研___考研计算机_复试上机

标签:--   name   soft   mil   class   考研   iostream   假设   pac   

原文地址:https://www.cnblogs.com/xfgnongmin/p/10762777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
分享档案
周排行
mamicode.com排行更多图片
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!