Description
For example file A contains (5,3,7,7),and file B contains (7,5,3,3). They have the same integer set (3,5,7), so they are same.
Another sample file C contains(2,5,2,5), and file D contains (2,5,2,3).
The integer set of C is (2,5),but the integer set of D is (2,3,5),so they are not same.
Now you are expected to write a program to compare two files with size of n.
Input
Process to the end of file.
$1 \leq n \leq 100$
$1 \leq a_i , b_i \leq 1000000000$
Output
Sample Input
3 1 1 2 1 2 2 4 5 3 7 7 7 5 3 3 4 2 5 2 3 2 5 2 5 3 1 2 3 1 2 4
Sample Output
YES YES NONO
统计是否上下两次输入中是否上次输入的下次都能找到,反过来也是。
//AC
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #include<ctype.h> #include<iostream> #include<string> #include<algorithm> #include<set> #include<vector> #include<queue> #include<map> #include<numeric> #include<stack> #include<list> const int INF=1<<30; const int inf=-(1<<30); using namespace std; int a[111],b[111],c[111]; bool s(int n) { for(int i=0; i<n; i++) //判断是否a数组中的元素在b数组中都能找到 for(int j=0; j<n; j++) { if(a[i]==b[j]) { break; } else if(a[i]!=b[j]&&j==n-1) //此时说明未找到 return false; } for(int i=0; i<n; i++) for(int j=0; j<n; j++) { if(b[i]==a[j]) { break; } else if(b[i]!=a[j]&&j==n-1) return false; } return true; } int main() { int n; while(cin>>n) { for(int i=0; i<n; i++) { c[i]=0; scanf("%d",&a[i]); } sort(a,a+n); for(int i=0; i<n; i++) { scanf("%d",&b[i]); } sort(b,b+n); bool it=s(n); if(it) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }