第一次没有AC,输出超限
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int s[7];
for(int i=0;i<7;i++)
cin>>s[i];
int x;
int flag=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<7;j++)
{
cin>>x;
for(int z=0;z<7;z++)
{
if(x==s[z])
flag++;
}
}
}
int a=0;
for(int i=0;i<7-flag;i++)
{
if(a!=0)
cout<<" ";
cout<<"0";
a++;
}
for(int i=0;i<flag;i++)
cout<<" 1";
cout<<endl;
return 0;
}
第二次 用了v[x]代替其中的第三个循环,也就是说这种做法可以优化一个for循环。
#include<bits/stdc++.h>
using namespace std;
int a[10],n,b[50],x;
int main()
{
while (cin>>n)
{
memset ( a , 0 , sizeof(a) );
memset ( b , 0 , sizeof(b) );
for ( int i=0 ; i<7 ; i++ )
{
cin>>x;
b[x] = 1;
}
for ( int i=0 ; i<n ; i++ )
{
int cnt = 0;
for ( int j=0 ; j<7 ; j++ )
{
cin>>x;
if ( b[x] ) cnt++;
}
a[7-cnt]++;
}
for ( int i=0 ; i<7 ; i++ )
{
if ( i )
cout<<" ";
cout<<a[i];
}
cout<<endl;
}
return 0;
}