1,比较奇偶数个数
-
题目描述:
-
第一行输入一个数,为n,第二行输入n个数,这n个数中,如果偶数比奇数多,输出NO,否则输出YES。
-
输入:
-
输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000)。
-
输出:
-
如果偶数比奇数多,输出NO,否则输出YES。
-
样例输入:
-
5 1 5 2 4 3
-
样例输出:
-
YES
#include<iostream>
using namespace std;
int main(){
int n,m;
int o,j,i;
while(cin>>n){
o=0;
j=0;
for(i=0;i<n;i++){
cin>>m;
if(m%2 == 0){
o++;
}else{
j++;
}
}
if( o > j){
cout<<"NO"<<endl;
}else{
cout<<"YES"<<endl;
}
}
return 0;
}
2,找最小数
-
题目描述:
-
第一行输入一个数n,1 <= n <= 1000,下面输入n行数据,每一行有两个数,分别是x y。输出一组x y,该组数据是所有数据中x最小,且在x相等的情况下y最小的。
-
输入:
-
输入有多组数据。
每组输入n,然后输入n个整数对。
-
输出:
-
输出最小的整数对。
-
样例输入:
-
5 3 3 2 2 5 5 2 1 3 6
-
样例输出:
-
2 1
总结:上面的是我写的,没有ac,不明白,下面一个是看别人的,写的真好。
#include<iostream>
using namespace std;
int main(){
int n,m,h;
int i;
while(cin>>n){
int arr[2020] = {0};
for(i=0;i<n;i++){
cin>>m;
cin>>h;
if(arr[m+510] != 0){
if(h < arr[m+510]){
arr[m+510] =h;
}
}else{
arr[m+510] = h;
}
}
for(i=0;i<2020;i++){
if(arr[i] != 0){
cout<<i-510<<" "<<arr[i]<<endl;
break;
}
}
}
return 0;
}
#include<stdio.h>
#include<string.h>
int main(){
int i,n,x,y,MinX,MinY;
//freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);
while(scanf("%d",&n) != EOF){
for(i = 0;i < n;i++){
scanf("%d %d",&x,&y);
//第一次为MinX,MinY赋初值
if(i == 0){
MinX = x;
MinY = y;
}
else{
//该组数据是所有数据中x最小,且在x相等的情况下y最小的。
if(x < MinX){
MinX = x;
MinY = y;
}
else if(x == MinX && y < MinY){
MinX = x;
MinY = y;
}
}
}
printf("%d %d\n",MinX,MinY);
}
}
3,C翻转
-
题目描述:
-
首先输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。
操作类型有四种:
1 2 表示:90度,顺时针,翻转4个数
1 3 表示:90度,顺时针,翻转9个数
2 2 表示:90度,逆时针,翻转4个数
2 3 表示:90度,逆时针,翻转9个数
-
输入:
-
输入有多组数据。
每组输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。
-
输出:
-
输出翻转后的数组。
-
样例输入:
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 3 1 1
-
样例输出:
-
11 6 1 4 5 12 7 2 9 10 13 8 3 14 15 16 17 18 19 20 21 22 23 24 25
4,哈夫曼树
-
题目描述:
-
哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。
-
输入:
-
输入有多组数据。
每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。
-
输出:
-
输出权值。
-
样例输入:
-
5 1 2 2 5 9
-
样例输出:
-
37
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n,i,sum;
int arr[1001];
while(cin>>n){
for(i=0;i<n;i++){
cin>>arr[i];
}
sum = 0;
for(i=1;i<n;i++){
sort(arr+i-1,arr+n);
sum += arr[i] + arr[i-1];
arr[i] += arr[i-1];
}
cout<<sum<<endl;
}
return 0;
}