1. 程式人生 > >CCF認證 201503-1 影象旋轉(100分) 201503-2 數字排序(100分)

CCF認證 201503-1 影象旋轉(100分) 201503-2 數字排序(100分)

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;
}