补题002 R - 自学之map/set

一:题目来源:https://vjudge.net/contest/207402#problem/R


二:wa点:没啥好说的,主要注意格式

 for(j=0;j<n+num;j++)
        {
        	if(j!=n+num-1)
		    	cout<<an[j]<<" "; 
		    else
		    	cout<<an[j];
		} 

开始这里我写的是j!=n+num;发现j走到n+num时候不会再循环,减了个1就ac了(顺便感谢一波提示我的大佬)

三:思路:

  将两行的元素分别存到an,bn两个数组中,看bn中有没有an中没有包含的元素,有就把这个元素加到an中,最后从小到大排序,输出,nice(据说内存会爆但我居然ac了23333。其实是我还不会map……溜走,到时再用map写一次/笑哭)

四:题解:


#include<iostream>
#include<algorithm>
#define N 10000
using namespace std;

int main() 
{
    int n,m,i,j;
    while(cin>>n>>m)
    {
    	if(n==0&&m==0)
    	    break; 
    	int bn[N]={0},an[N]={0},num;
    	for(i=0;i<n;i++)
			cin>>an[i];
	    for(i=0;i<m;i++)
			cin>>bn[i];
		num=0;//没有不重复的	
        for(i=0;i<m;i++)//看bn数组中有没有an中没有的元素 
        {
        	for(j=0;j<n;j++)
        	{
        		if(bn[i]==an[j])//有相同的 
        		    break; 
			}
			if(j==n)//没有相同的 
		    {	
			    an[n+num]=bn[i];
			    num++; 
		    } 
        }
        sort(an,an+n+num);
        for(j=0;j<n+num;j++)
        {
        	if(j!=n+num-1)
		    	cout<<an[j]<<" "; 
		    else
		    	cout<<an[j];
		} 
		cout<<endl;
    }
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值