在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1; 题目一16.电商促销某种商品时,希望通过打折鼓励消费者组团消费。已知,团队消费金额=该团的人数和*商品单价。打折规则如下: 输出样例:4250 #include<iostream> using namespace std; int main(){ int n,m; double res; cin>>n>>m; if(n<50){ }else if(n<100){ res=m*0.9; }else{ res=m*0.85; } cout<<n*res; return 0; } 2:题目二17.对于给定的十进制整数N(N<100000),将1到N(含N)之间的每个整数转成八进制,求转换后的所有八进制数中含7的总个数。 输出样例:1 #include<iostream> using namespace std; int l=0,ans[500]= {0}; int res=0; void change(int x) { if(x<8) { ans[l++]=x; for(int i=l-1; i>=0; i--) { //cout<<ans[i]; if(ans[i]==7){ res++; } } return; } else { ans[l++]=x%8; } change(x/=8); } int main(){ int n,i; cin>>n; for(i=0;i<n;i++){ change(n); } cout<<res; return 0; }
3:题目三18.输入N个整数,从中挑选符合以下规则的三种类型的数,分别输出。 输入样例:10 11 12 13 24 25 26 37 38 39 40 输出样例: 11 24 37 12 25 38 13 26 39 #include<iostream> using namespace std; void solution(int arr[],int n,int sw){ switch(sw){ case 1: for(int i=0;i<n;i++){ if(arr[i]%10==1||arr[i]%10==4||arr[i]%10==7){ cout<<arr[i]<<" "; } } break; case 2: for(int i=0;i<n;i++){ if(arr[i]%10==2||arr[i]%10==5||arr[i]%10==8){ cout<<arr[i]<<" "; } } break; case 3: for(int i=0;i<n;i++){ if(arr[i]%10==3||arr[i]%10==6||arr[i]%10==9){ cout<<arr[i]<<" "; } } break; } } int main(){ int n,i; int arr[100000]={0}; cin>>n; for(i=0;i<n;i++){ cin>>arr[i]; } for(i=0;i<3;i++){ solution(arr,n,i+1); cout<<endl; } return 0; }
4题目四19.在N(N<30)名运动员参加的体操比赛中,有K(K<10)名裁判给每位运动员分别打分,按规则每名运动员最后得分需去掉一个最高分和一个最低分,然后把其他裁判的打分相加,计算得出该运动员的总得分(规定数据中每名运动员的总得分各不相同)。现在比赛完毕,根据总得分高低排序得出冠军、亚军。 Zhao 90 92 85 90 Li 75 80 85 80 输出样例:Zhao Wang #include<bits/stdc++.h> using namespace std; struct Athlete{ string name; int sco[11]={0};//有K(K<10)名裁判 }; bool compare(int a,int b) { return a<b; } void out(Athlete p[],int n,int m){ for(int i=0;i<n;i++){ cout<<p[i].name; for(int j=0;j<m;j++){ cout<<p[i].sco[j]<<" "; } } } int main(){ int n,m; Athlete p[31]; int finalsco[31]={0}; cin>>n>>m; for(int i=0;i<n;i++){ cin>>p[i].name; for(int j=0;j<m;j++){ cin>>p[i].sco[j]; } } for(int i=0;i<n;i++){ sort(p[i].sco,p[i].sco+4,compare); } for(int i=0;i<n;i++){ for(int j=1;j<m-1;j++){ finalsco[i]+=p[i].sco[j]; } } int indexone=0; int MaxSco=0; for(int i=0;i<n;i++){ if(MaxSco<finalsco[i]){ MaxSco=finalsco[i]; indexone=i; } } int indextwo=0; MaxSco=0; for(int i=0;i<n;i++){ if(i==indexone) continue; if(MaxSco<finalsco[i]){ MaxSco=finalsco[i]; indextwo=i; } } cout<<p[indexone].name<<" "<<p[indextwo].name; //out(p,n,m); return 0; }
5题目五20.已知结点元素值为正整数且值不相同的一棵二叉树。该二叉树通过给出其先序遍历序列和中序遍历序列构造而成。输入一个整数x,针对此二叉树编写程序求出x的右子树中所有结点值的和(若×不在树上,输出-1)。 输出案例1:51 输入样例2:20 15 10 12 18 16 17 25 30 10 12 15 16 17 18 20 25 30 输出案例2:0 输入样例3:20 15 10 12 18 16 17 25 30 10 12 15 16 17 18 20 25 30 输出案例3:-1 思路: 找到前序的中点, 遍历中序的排列 找到中序树的与前序对应的根节点,即为 下标的左边即为 是否存在的值 不存在输出-1 下面写到一半觉得没有必要这样写 ,应为根据中序可以直接求出右子树的值
#include<stdio.h> #include<stdlib.h> typedef int eleType; typedef struct BiTree{ eleType data; struct BiTree* lt; struct BiTree* rt; }BiTreeNode; BiTreeNode* createTree(eleType *pre,eleType *mid,int number){ if(number==0)return NULL;//无节点返回null eleType ele=pre[0];// 头节点 int i=0; //for(i=0;i<number&&ele!=mid[i];i++); while(i<number && mid[i]!=ele)i++; int leftNodeNum=i; int rightNodeNum=number-i-1; BiTreeNode *node=(BiTreeNode*)malloc(sizeof(BiTreeNode)); node->data=ele; node->lt=createTree(&pre[1],&mid[0],leftNodeNum);// 创建左节点 node->rt=createTree(&pre[leftNodeNum+1],&mid[leftNodeNum+1],rightNodeNum);// 创建左节点 return node; } void printT(BiTreeNode *node){ if(node==NULL)return; if(node->data!=0)printf("%d ",node->data); printT(node->lt); printT(node->rt); } void printT2(BiTreeNode *node){ if(node==NULL)return; printT(node->lt); if(node->data!=0)printf("%d ",node->data); printT(node->rt); } int main(){ char testa[]="12473568";//20 15 10 12 18 16 17 25 30 char testb[]="47215368";//10 12 15 16 17 18 20 25 30 int inputa[100]={20,15,10,12,18,16,17,25,30}; int inputb[100]={20,15,10,12,18,16,17,25,30}; BiTreeNode *node; node=createTree(inputa,inputb,sizeof(inputa)/sizeof(inputa[0])); printT2(node); return 0; }
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论