【【普及-】集合运算(C++)】

【普及-】集合运算(C++)

看在作者大大如此用心打代码的份上,就点个三连吧!!!

级别:普及-(部分网站不一样)
难度:
适做年龄:初中组

题目:

描述
在数学上, 2个集合A和B之间的运算一般有并集、差集、交集, 分别记作A+B、A-B、AxB。
本题要求设计一款模拟集合运算的游戏程序,已知所有集合的元素都是小写字母,集合的输入、输出用字符串表示。
例如, 集合A=(a, b, d, e) , 输入输出用字符串“abde”表示。
现在输入n个集合运算式, 求运算结果。
例如, 运算式abcd-bckg, 那么结果为ad。

输入
第一行一个正整数n,表示有多少运算式,1≤n≤100。下面n行,每行一个运算式。
运算符号一定是+、-、* 之一,运算符号两边各有一个空格隔开。

输出
共n行,对应输入的运算结果 

样式输入
2
abcd + bcefg
abcd * bcefg

样式输出
abcdefg
bc

解答:

​
#include <bits/stdc++.h>
using namespace std;
string sa,sb,res;
char op;
int a[128],b[128];
string ys(string sa,char op,string sb)
{
  for(int i=0;i<sa.size();i++)a[sa[i]]=1;
  for(int j=0;j<sb.size();j++)b[sb[j]]=1;
  if(op=='+')
  {
    for(char i='a';i<='z';i++)
    {
      if(a[i]||b[i])res=res+i;
    }
  }
  else if(op=='-')
  {
    for(char i='a';i<='z';i++)
    {
      if(a[i]&&!b[i])res=res+i;
    }
  }
  else if(op=='*')
  {
    for(char i='a';i<='z';i++)
    {
      if(a[i]&&b[i])res=res+i;
    }
  }
  return res;
}
int main()
{
  int n;
  cin>>n;
  while(n--)
  {
    memset(a,0,sizeof a);
    memset(b,0,sizeof b);
    res="";
    cin>>sa>>op>>sb;
    cout<<ys(sa,op,sb)<<endl;
  }
    return 0;
}

​
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值