例题5-9 数据库

原题

图片.png

翻译一下这个题目大概意思说如果一个作者写了几本书,很明显会有重复的信息。为了让这些信息都是唯一的(大概是这个意思),Peter自己定义了一种表格称为PNF,这种表格意思是表格里面没有重复的信息的话,就说明这个表格是PNF。由于他输入的是书名,作者还有作者邮箱,所以每一个作者都能唯一标识一个邮箱,除了同一个作者写的书的书名是不一样的,同一个作者的其他信息是完全相同的。因此,我们知道找到有任意两组相同的信息就可以了。比如(r1,c1)=(r1,c2)&&(r2,c2)=(r2,c1)。

图片.png

输入要求:输入包含几组数据,第一行包括两个整形数据n和m,代表数据库的行和列,接下来的n行输入m个数据,这些字符包括从空格到逗号(指ascII码的第32到第126),每行最多80个字符
输出要求:对于每组数据,如果表格属于PNF则输出YES。如果不是,就输出三行,分别是NO,整形数据r1和r2,还有c1和c2,代表是(r1,c1)=(r1,c2)&&(r2,c2)=(r2,c1)。

解题思路:首先这是个比较数据的问题,而且比较的数据有点多,我不可能一个一个字符来比较,这里我们可以用到map来做映射,将每行每列所代表的数据换成数字,然后比较数字是否一致,就可以了。

但第二个问题又来了,我怎么解决这个映射的问题,我们都知道通常我们用的map都是map这种格式,但是这里又有行又有列的怎么办,这里我们可以用pair来做处理,用typedef来定义一个pair,让后用这个pair做映射,即map

然后是怎样输入数据,因为输入的字符是在ascII码中从空格到逗号中的所有字符,所以可以用getchar()一个一个获取输出,然后判断是否有空格和逗号,有的话就进入下一个字符的输入。

思路想到

你可能感兴趣的:(例题5-9 数据库)