杭电2034人见人爱A-B

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2034

#include <cstdlib>

#include <iostream>



using namespace std;



int main(int argc, char *argv[])

{

    int m,n;

    int A[100]={0},B[100]={0};

    while(cin>>m>>n)

    {

      int t,flag=0;

      if(m==0&&n==0)

        break;

      for(int i=0;i<m;i++)

        cin>>A[i];

      for(int j=0;j<n;j++)

        cin>>B[j];

      for(int i=0;i<m;i++)

        for(int j=0;j<n;j++)

        {

          if(A[i]==B[j])

          {

            A[i]=-1;

          }

        }   

      //下面的for语句是为了判断A集合中的元素是否全包含在B集合中  

      for(int i=0;i<m;i++)

      {

        if(A[i]!=-1)

        {

          flag=1;

          //做标记flag=1证明A集合去掉与B集合相同的元素后,不为空  flag=0表明A集合变为空了 

          break;

        }  

      }

      if(flag==0)

        cout<<"NULL";

      if(flag==1)

      {

        //下面的二重循环是冒泡排序,顺序由小到大 

        for(int i=0;i<m;i++)

          for(int j=0;j<m-i-1;j++)

          {

            if(A[j]>A[j+1])

            {

              t=A[j];

              A[j]=A[j+1];

              A[j+1]=t;

            } 

          }

        for(int i=0;i<m;i++)

          if(A[i]!=-1)

            cout<<A[i]<<" ";     

      }

      cout<<endl;

    }

    system("PAUSE");

    return EXIT_SUCCESS;

}

这题的代码有点乱,思路不是很好,应该有更简洁的方法,开始时忘记排序了,还有就是输出格式不正确,注意细节!

你可能感兴趣的:(杭电)