0
点赞
收藏
分享

微信扫一扫

7-1 懂的都懂

犹大之窗 2022-05-06 阅读 80
c++

众所周知,在互联网上有很多话是不好直接说出来的,不过一些模糊的图片仍然能让网友看懂你在说什么。然而对这种言论依然一定要出重拳,所以请你实现一个简单的匹配算法。

现在我们采集了原图的一些特征数据,由 N 个小于 255 的非负整数组成,假设对于给定的若干张由 Mi​ 个同样小于 255 的非负整数组成的新图的特征数据,每个数据都可以由原图中任意四个不同数据的平均值计算而来,则称新图为原图的相似图片。对于给出的数据,请你判断是不是相似图片。

注意,不同数据指的并非是数据的值不同,而是不能取同一个数据多次。对于两个相同值的数据,如果给出两次,则可以取两次。

输入格式:

输入第一行是两个整数 N,K (1 ≤ N ≤ 50, 1 ≤ K ≤ 200),表示采集的原图的特征数据个数和新图的张数。

接下来一行为 N 个小于 255 的非负整数,表示原图的特征数据。

最后的 K 行,每行第一个数是 Mi​ (1 ≤ Mi​ ≤ 200),表示新图的特征数据个数。然后是 Mi​ 个小于 255 的非负整数,表示新图的特征数据。

输出格式:

对于每一张新图,如果为相似图片,则在一行中输出 Yes,否则输出 No。

输入样例:

输出样例:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int flag;
    int a1,a2,a3,a4;
    int n,k;
    int i,j,m;
    cin>>n>>k;
    int a[n];
    int ans[20020]={0};
    for(i=0;i<n;i++){
        cin>>a[i];
    }
    for(a1=0;a1<n;a1++){
		for(a2=a1+1;a2<n;a2++){
			for(a3=a2+1;a3<n;a3++){
				for(a4=a3+1;a4<n;a4++){
					int sum=a[a1]+a[a2]+a[a3]+a[a4];
					ans[sum]=1;
				}
			}
		}
	}
    for(i=0;i<k;i++){
        cin>>j;
        int b[j];
        flag=1;
        for(m=0;m<j;m++){
            cin>>b[m];
            if(ans[b[m]*4]!=1) flag=0;
        }
        if(flag==1) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}
举报

相关推荐

7-1作业

7-1 打印沙漏

7-1 磁盘文件的读写

7-1 时间换算 (10 分)

7-1 马兰过河卒(sdut)

7-1 念数字 (10 分)

7-1 计算组合数 (20 分)

7-1 检查宿舍卫生(20分)

0 条评论