`
xuerenlv
  • 浏览: 6109 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

西北工业大学_2011___考研计算机_复试上机

 
阅读更多

1,杨辉三角形

题目描述:

输入n值,使用递归函数,求杨辉三角形中各个位置上的值。

输入:

一个大于等于2的整型数n

输出:

题目可能有多组不同的测试数据,对于每组输入数据,
按题目的要求输出相应输入n的杨辉三角形。

样例输入:
6
样例输出:
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
总结:递归掌握的不好

#include<iostream>
#include<vector>
using namespace std;


vector<int> print_triangle(int n){
	vector<int> re_vector;
	
	//递归退出条件
	if(n == 1){
		re_vector.push_back(1);
		re_vector.push_back(1);
	}else{
		//递归调用
		vector<int> pre_level = print_triangle(n-1);
		for(int i=0;i < pre_level.size();i++){
			cout<<pre_level[i];
			if(i != pre_level.size() - 1){
				cout<<" ";
			}else{
				cout<<endl;
			}
		}
		re_vector.push_back(1);
		int p1 = 0;
		int p2 = 1;
		//n - - > 1表明其运行 n-2 次,中间有 n-2个元素需进行计算
		while(n-->1){
			re_vector.push_back(pre_level[p1]+pre_level[p2]);
			p1++;
			p2++;
		}
		re_vector.push_back(1);
	}
	
	return re_vector;
}

int main(){
	int n;

	while(cin>>n){
		print_triangle(n);
	}
	

	return 0;
}

2,调整方阵

题目描述:

输入一个N(N<=10)阶方阵,按照如下方式调整方阵:
1.将第一列中最大数所在的行与第一行对调。
2.将第二列中从第二行到第N行最大数所在的行与第二行对调。
依此类推...
N-1.将第N-1列中从第N-1行到第N行最大数所在的行与第N-1行对调。
N.输出这个方阵

输入:

包含多组测试数据,每组测试数据第一行为一个整数N,表示方阵的阶数.
接下来输入这个N阶方阵.

输出:

调整后的方阵

样例输入:
4
3 6 8 7
6 7 5 3
8 6 5 3
9 8 7 2
样例输出:
9 8 7 2
6 7 5 3
3 6 8 7
8 6 5 3
总结:还是要细心

#include<iostream>
using namespace std;

void adjust_mutex(int num[10][10],int c,int n){
	int swap,i;
	int max = c;
	for(i=c;i<n;i++){
		if(num[i][c] > num[max][c]){
			max = i;
		}
	}
	if(max != c){
		for(i=0;i<n;i++){
			swap = num[c][i];
			num[c][i] = num[max][i];
			num[max][i] =swap;
		}
	}
}

int main(){
	int n,i,j;
	int mutex[10][10];

	while(cin>>n){
		for(i=0;i<n;i++){
			for(j=0;j<n;j++){
				cin>>mutex[i][j];
			}
		}
		
		for(i=0;i<n;i++){
			adjust_mutex(mutex,i,n);
		}

		for(i=0;i<n;i++){
			for(j=0;j<n-1;j++){
				cout<<mutex[i][j]<<" ";
			}
			cout<<mutex[i][n-1]<<endl;
		}
	}



	return 0;
}


3,合并符串

题目描述:

给定两个字符串S1和S2,合并成一个新的字符串S。
合并规则为,S1的第一个字符为S的第一个字符,将S2的最后一个字符作为S的第二个字符;
将S1的第二个字符作为S的第三个字符,将S2的倒数第二个字符作为S的第四个字符,以此类推。

输入:

包含多组测试数据,每组测试数据包含两行,代表长度相等的两个字符串S1和S2(仅由小写字母组成,长度不超过100)。

输出:

合并后的新字符串S

样例输入:
abc
def
样例输出:
afbecd
总结:1,字符串长度不确定的时候最好还是要使用char【】。 2,好像考虑多了,题目的两个字符串等长。

#include<iostream>
#include<string>
using namespace std;

int main(){
	string str1,str2;
	char m_str[202];
	int len1,len2;
	int i,j,h;

	while(cin>>str1 && cin>>str2){
		len1 = str1.length();
		len2 = str2.length();
		
		h=0;
		for(i=0,j=len2-1;i<len1 && j>=0;i++,j--){
			m_str[h++] = str1[i];
			m_str[h++] = str2[j];
		}

		if(i<len1){
			for(i;i<len1;i++){
				m_str[h++] = str1[i];
			}
		}
		if(j>=0){
			for(j;j>=0;j--){
				m_str[h++] = str2[j];
			}
		}
		
		for(i=0;i<h-1;i++){
			cout<<m_str[i];
		}
		cout<<m_str[h-1]<<endl;
	}


	return 0;
}

4,求两个多项式的和

题目描述:

输入两个多项式,计算它们的和。
每个多项式有若干对整数表示,每组整数中,第一个整数表示系数(非0),第二个整数表示该项的次数。
如由3 3 5 -2 1 4 0表示3x^5 - 2 * x + 4其中第一个3表示该多项式由三个整数对表示。

输入:

输入为两行,分别表示两个多项式。表示每项的整数对按照次数大小降序给出。(次数绝对值小于1000,系数绝对值小于10000)

输出:

按照降次顺序输出表示和多项式的整数对(系数为0的整数对不用输出,整数对由空格分隔,最后一个整数对后不添加空格)

样例输入:
3 3 5 -2 1 4 0
4 2 3 -1 2 1 1 3 0
样例输出:
3 5 2 3 -1 2 -1 1 7 0
总结:感觉写的不好,不精彩!!

#include<iostream>
using namespace std;

int main(){
	int i,j,n,m;
	int x,c;

	while(cin>>n){
		int po1[2010]={0};
		int po2[2010]={0};
		int sum[2010]={0};

		for(i=0;i<n;i++){
			cin>>x>>c;
			po1[c+1000] = x;
		}
		cin>>m;
		for(i=0;i<m;i++){
			cin>>x>>c;
			po2[c+1000] = x;
		}

		for(i=0;i<2010;i++){
			sum[i] = po1[i] + po2[i];
		}
		
		for(j=0;j<2010;j++){
			if(sum[j] != 0){
				break;
			}
		}

		for(i=2009;i>j;i--){
			if(sum[i] != 0){
				cout<<sum[i]<<" "<<i-1000<<" ";
			}
		}

		cout<<sum[j]<<" "<<i-1000<<endl;		
	}

	return 0;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics