1.给两个十进制数,先异或,然后输出其二进制形式
#include<iostream>
#include<vector>
using namespace std;
vector<int> v;
int main(){
int x,y;
cin>>x>>y;
int n=x^y;
while(n!=0){
v.push_back(n%2);
n/=2;
}
for(int i=v.size()-1;i>=0;i--) cout<<v[i];
}
2.一共有十二个球,其颜色有红、黄、黑三种,红黄黑分别有想 x,y,k个,现在从其中取出八个球,共有多少种取法,输出到文件中?(x,y,k是从键盘输入,痛颜色的球不区分)
#include<iostream>
using namespace std;
const int MAXN=1000;
struct E{
int x,y,k;
}E[MAXN];
int main(){
int x,y,k;
cin>>x>>y>>k;
int Count=0;
for(int i=1;i<=x;i++){
for(int j=1;j<=y;j++){
for(int m=1;m<=k;m++){
if(i+j+m==8){
E[Count].x=i;
E[Count].y=j;
E[Count].k=m;
Count++;
}
}
}
}
cout<<"共"<<Count<<"种取法";
for(int i=0;i<Count;i++){
cout<<E[i].x<<"红球 "<<E[i].y<<"黄球 "<<E[i].k<<"黑球"<<endl;
}
}
3.在in.txt中查看是否有模式 abcde。若有,输出“找到 abcd?e匹配”;若无,则输出“没有找到 abcd?e匹配”
不会做...
4.给你一个二叉树,每个节点有编号,给你一个序列,每个节点给了左孩子和右孩子的编号,让你输出这个二叉树的后序遍历结果。
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
const int MAXN=100;
struct TreeNode{
char data;
TreeNode* left;
TreeNode* right;
TreeNode(char data):data(data),left(NULL),right(NULL){}
};
struct TreeNode* Tree[MAXN];
void PostOrder(TreeNode* root){
if(root==NULL) return;
PostOrder(root->left);
PostOrder(root->right);
cout<<root->data;
}
int main(){
ifstream infile("in.txt");
string s;
TreeNode* T=NULL;
while(getline(infile,s)){
int pos=s.find(" ");
char a=s.substr(0,pos)[0];
s=s.substr(pos+1);
pos=s.find(" ");
char b=s.substr(0,pos)[0];
s=s.substr(pos+1);
pos=s.find(" ");
char c=s.substr(0,pos)[0];
cout<<a<<" "<<b<<" "<<c<<endl;
TreeNode* Tl=NULL;
TreeNode* Tr=NULL;
if(Tree[a-'0']) T=Tree[a-'0'];
else{
T=new TreeNode(a);
Tree[a-'0']=T;
}
if(Tree[b-'0']) Tl=Tree[b-'0'];
else{
Tl=new TreeNode(b);
Tree[b-'0']=Tl;
}
if(Tree[c-'0']) Tr=Tree[c-'0'];
else{
Tr=new TreeNode(c);
Tree[c-'0']=Tr;
}
if(b!='0') T->left=Tl;
else T->left=NULL;
if(c!='0') T->right=Tr;
else T->right=NULL;
}
T=Tree[1];
PostOrder(T);
infile.close();
}