北航计算机复试上机题(2008)

原创 2012年03月22日 21:29:38

旋转矩阵

任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。

要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。(60分)


#include <iostream>
#include <cmath>
#include <string>

using namespace std;
int a[10][10];
int b[10][10];

bool judge0(int m,int n)
{
	int i,j;
	if(m==n)
	{
		
		for(i=0;i<m;i++)
			for(j=0;j<m;j++)
			{
				if(a[i][j]==b[i][j])
				{
					continue;
				}
				else
				{
					return false;
				}
			}

			return true;
	}
	else
	{
		return false;
	}

}

bool judge90(int m,int n)
{
	int i,j;
	if(m==n)
	{
		for(i=0;i<m;i++)
			for(j=0;j<m;j++)
			{
				if(a[i][j]==b[m-1-j][i])
				{
					continue;
				}
				else
				{
					return false;
				}
			}

			return true;
	}
	else
	{
		return false;
	}

}

bool judge180(int m,int n)
{
	int i,j;
	if(m==n)
	{
		for(i=0;i<m;i++)
			for(j=0;j<m;j++)
			{
				if(a[i][j]==b[m-1-i][m-1-j])
				{
					continue;
				}
				else
				{
					return false;
				}
			}

			return true;
	}
	else
	{
		return false;
	}

}

bool judge270(int m,int n)
{
	int i,j;
	if(m==n)
	{
		for(i=0;i<m;i++)
			for(j=0;j<m;j++)
			{
				if(a[i][j]==b[j][m-1-i])
				{
					continue;
				}
				else
				{
					return false;
				}
			}

			return true;
	}
	else
	{
		return false;
	}
}

int main()
{

	int t,number;
	int i,j;
	int m,n;
	cin>>number;

	for(t=1;t<=number;t++)
	{
		cin>>m;
		for(i=0;i<m;i++)
			for(j=0;j<m;j++)
			{
				cin>>a[i][j];
			}

	cin>>n;
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
		{
			cin>>b[i][j];
		}

		if(judge0(m,n)==true)
		{
			cout<<"0"<<endl;
		}
		else if(judge90(m,n)==true)
		{
			cout<<"90"<<endl;
		}
		else if(judge180(m,n)==true)
		{
			cout<<"180"<<endl;
		}
		else if(judge270(m,n)==true)
		{
			cout<<"270"<<endl;
		}
		else
		{
			cout<<"-1"<<endl;
		}
	}
	return 0;
}


 

3.字符串匹配

string.in中读入数据,然后用户输入一个短字符串。要求查找string.in中和短字符串的所有匹配,输出行号、匹配字符串到string.out文件中。匹配时不区分大小写,并且可以有一个用中括号表示的模式匹配。如“aa[123]bb”,就是说aa1bbaa2bbaa3bb都算匹配。(60分)

#include <iostream>
#include <string>
#include <iterator>
using namespace std;
int main()
{
	
	string a = "abcdef";
	string b = "a[bcde]cd[adfe]f";
	string _return = a;
	string::size_type pos = 0; 
	while((pos = b.find_first_of("[")) != string::npos)
	{
		if(a.substr(0, pos) == b.substr(0, pos))
		{
			a.erase(0, pos);
			b.erase(0, pos);
			pos = b.find_first_of("]");
			string tmp = b.substr(0, pos);
			string find = a.substr(0, 1);
			if(tmp.find(find.c_str()) != string::npos)
			{
				b.erase(0, pos + 1);
				a.erase(0, 1);
			}
			else
			return -1;
		}
		else
			return -1;
	}
	if(a == b)
		cout << _return << endl;
	return 0;
}



 或者

#include <iostream>
#include <string>
#include <iterator>
using namespace std;
int main()
{
	
	char *a = "abcdef";
	char *b = "a[bcde]cd[adfe]f";
	int i = 0, j = 0;
	while(a[i] != '\0')
	{
		if(b[j] == '[')
		{
			j++;
			bool hasi = false;
			while(b[j] != ']')
			{
				if(b[j] == a[i])
					hasi = true;
				j++;
			}
			if(!hasi)
				break;
			j++;
			i++;
		}
		else
		{
			if(a[i] != b[j])
				break;
			i++;
			j++;
		}	
	}	
	if(a[i] == '\0')
		cout << a << endl;
	return 0;
}


 

相关文章推荐

2011年北航计算机复试上机题代码

下面的代码是自己写的,难免有纰漏之处,发现请指正,谢谢。 点击2011年北航计算机复试上机题 第一题 /***********************************...

北航计算机复试上机题(2009)

2 数组排序 输入一个数组的值,求出各个值从小到大排序后的次序。 输入:输入的第一个数为数组的长度,后面的数为数组中的值,以空格分割 输出:各输入的值按从小到大排列的次序。 sample i...

2011年北航计算机复试上机题及代码

2011研究生C语言考试 2011级研究生面试 共有三道编程题,第一道题20分,第二道题15分,第三道题15分,总分50分。考试时间:2个小时。...
  • masikkk
  • masikkk
  • 2011年04月10日 19:33
  • 2125

北航计算机复试上机真题 2006~2016

  • 2017年03月06日 10:34
  • 331KB
  • 下载

北航2008年计算机复试上机

第一题、输入一个整数,要求输出所有从1到这个整数之间个位为1的素数,如果没有则输出-1 #include int prime[10000]; int primeSize; bool mark[...

北航计算机考研复试上机题源程序

  • 2011年03月19日 15:21
  • 1.47MB
  • 下载

北航2007年计算机复试上机

第一题、从输入的字符串中,统计空格,回车,TAB出现的次数 #include #include #include int main(){     int i=0;     int len,...

2008 BUPT 计算机复试上机题

1.  人数统计       题目地址:http://acm.scs.bupt.cn/onlinejudge/showproblem.php?problem_id=1305  #include #...

北航计算机本科生上机题

  • 2013年04月18日 20:12
  • 908KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:北航计算机复试上机题(2008)
举报原因:
原因补充:

(最多只允许输入30个字)