A:整数的个数
#include<iostream>
using namespace std;
int main(){
int k,a;
cin>>k;
int sum1=0,sum2=0,sum3=0;
for(int i=0;i<k;i++){
cin>>a;
if(a==1) sum1++;
if(a==5) sum2++;
if(a==10) sum3++;
}
cout<<sum1<<endl<<sum2<<endl<<sum3;
return 0;
}
B:过滤多余的空格
C:二维数组右上左下遍历
//http://bailian.openjudge.cn/xly2015/C/
//0,0 0,1 1,0 0,2
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int a[105][105], row, col;
cin >> row >> col;
for(int i = 0; i < row; ++i)
for(int j = 0; j < col; ++j)
cin >> a[i][j];
for(int k = 0; k <= row+col-2; ++k)//行列加和从0~row+col-2
{
for(int i = 0; i < row; ++i)//遍历矩阵
for(int j = col-1; j >= 0; --j)
{
if(i+j == k)//如果在行列加和为k的斜线上
cout << a[i][j] << endl;
}
}
return 0;
}
D 合影效果
E:Simple prefix compression
H:Falling Leaves
#include <iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
struct Node
{
char data;
Node *left;
Node *right;
};
typedef struct Node* Tree;
string temp, str;
Tree Insert(Tree BST,char x)
{
if(BST==NULL)
{
BST = (Tree)malloc(sizeof(Node));
BST->data = x;
BST->left=BST->right=NULL;
}
else{
if(x<BST->data)//左节点
{
BST->left = Insert(BST->left,x);
}
else if(x>BST->data)//右节点
{
BST->right = Insert(BST->right,x);
}
//数据已存在的话就不插入
}
return BST;
}
Tree createBST(){ //建树
Tree root = NULL;
for(int i=0;i<str.length();i++)
root = Insert(root,str[i]);
return root; //返回根结点
}
void Print(Tree BST)
{
if(BST!=NULL)
{
printf("%c",BST->data);
Print(BST->left);
Print(BST->right);
}
}
int main(){
while(cin >> temp){ //输入字符串
if(temp != "*" && temp != "$"){
//如果输入的字符串不是组结束符或结尾符
str += temp; //将出入的字符串加到str字符串尾部
continue;
}
//如果输入的时组结束符或结尾符
reverse(str.begin(),str.end()); //将str数组反转
Tree bst = createBST(); //建树
str = ""; //将str清空
Print(bst); //输出前序遍历
printf("\n");
if(temp == "$")//如果是结尾符跳出循环
break;
}
return 0;
}