CCF认证 201503-1 图像旋转(100分) 201503-2 数字排序(100分)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Miranda_ymz/article/details/84938250

CCF认证2015-03-1 图像旋转

问题描述

  旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。
  计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。

输入格式

  输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。
  接下来n行每行包含m个整数,表示输入的图像。

输出格式

  输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。

样例输入

2 3
1 5 3
3 2 4

样例输出

3 4
5 2
1 3

评测用例规模与约定

  1 ≤ n, m ≤ 1,000,矩阵中的数都是不超过1000的非负整数。

#include<iostream>
#include<cstdio> 
using namespace std;
int a[1010][1010];
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
		scanf("%d",&a[i][j]);
	for(int i=m-1;i>=0;i--)
	{
		for(int j=0;j<n;j++)
		{
			if(j==0) printf("%d",a[j][i]);
			else printf(" %d",a[j][i]);
		}
		printf("\n");
	}
	return 0;
}

CCF认证201503-2 数字排序

问题描述

  给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。

输入格式

  输入的第一行包含一个整数n,表示给定数字的个数。
  第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。

输出格式

  输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。

样例输入

12
5 2 3 3 1 3 4 2 5 2 3 5

样例输出

3 4
2 3
5 3
1 1
4 1

评测用例规模与约定

  1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct node{
	int id;
	int cnt;
	bool operator <(const node &u)const
	{
		if(cnt!=u.cnt)  return cnt>u.cnt;
		return id<u.id;
	} 
}m[1010];
int main()
{
	int n,a;
	scanf("%d",&n);
	for(int i=0;i<1010;i++)
		m[i].id=i,m[i].cnt=0;
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a);
		m[a].cnt++;
	}
	sort(m,m+1010);
	int i=0;
	while(m[i].cnt>=1){
		printf("%d %d\n",m[i].id,m[i].cnt);
		i++;
	}	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Miranda_ymz/article/details/84938250