图像旋转
问题描述
旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转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的非负整数。
package CCF;
import java.util.Scanner;
public class fiftenn_three_one {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner myscan = new Scanner(System.in);
String s = myscan.nextLine();
String[] ss = s.split(" ");
int m = Integer.parseInt(ss[0]), n = Integer.parseInt(ss[1]);
int[][] use = new int[m][n];
for(int i=0;i<m;i++) {
s = myscan.nextLine();
ss = s.split(" ");
for(int j=0;j<n;j++) {
use[i][j] = Integer.parseInt(ss[j]);
}
}
for(int j=n-1;j>=0;j--) {
for(int i=0;i<m;i++) {
System.out.print(use[i][j]+" ");
}
System.out.println();
}
myscan.close();
}
}
数字排序
问题描述
给定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的非负整数。
package CCF;
import java.util.ArrayList;
import java.util.*;
import java.util.List;
import java.util.Scanner;
public class fifteen_three_two {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner myscan = new Scanner(System.in);
int num = Integer.parseInt(myscan.nextLine());
String[] s = myscan.nextLine().split(" ");
List<Integer> nums = new ArrayList<>();
List<Integer> times = new ArrayList<>();
for(int i=0;i<num;i++) {
int use = Integer.parseInt(s[i]);
if(nums.contains(use)) {
for(int j=0;j<nums.size();j++) {
if(nums.get(j) == use) {
int addone = times.get(j);
addone++;
times.set(j, addone);
}
}
}
else {
nums.add(use);
times.add(1);
}
}//print(nums,times);
myscan.close();
for(int i=0;i<nums.size();i++) {
for(int j=i+1;j<nums.size();j++) {
if(times.get(i)<times.get(j)) {
Collections.swap(times,i,j);
Collections.swap(nums,i,j);
}
}
}
for(int i=0;i<nums.size();i++) {
for(int j=i+1;j<nums.size();j++) {
if(times.get(i)==times.get(j)) {
if(nums.get(i)>nums.get(j)) {
Collections.swap(nums, i, j);
}
}
}
}
print(nums,times);
}
public static void print(List<Integer> nums,List<Integer> times) {
for(int i=0;i<nums.size();i++) {
System.out.println(nums.get(i)+" "+times.get(i));
}
}
}