子矩阵中具有给定范围内元素的唯一元素的数量?

时间:2013-12-08 15:05:04

标签: c++ arrays matrix

我想到了以下内容,但它需要大量内存。

由于我需要在任何子矩阵中找到唯一元素,并且元素在1-10范围内,我为每个矩阵成员创建一个大小为10的数组,该数组存储每个元素的出现次数,直到该矩阵成员(左起)在那一行中。

e.g。

如果行是1, 2, 2, 4, 3, 5

然后arr[3][10]={1,2,0,1,0,0,0,0,0,0} //for the 3rd element '4', '1' occurred once, '2' twice and '4' once.

arr[5][10]={1,2,1,1,1,0,0,0,0,0} //for the last element '5'

因此,我可以通过遍历两个数组中的每一个来查看任意两个成员之间的唯一元素的数量,并查看哪些数组成员是不同的。

我可以将子矩阵每一行中的所有唯一元素推送到set,并找到唯一元素的数量。

但是,如果矩阵大小增加,此方法需要大量内存。有没有更好的方法呢?

2 个答案:

答案 0 :(得分:1)

对于offtopic很抱歉,但是这样的问题会导致禁止

您要求有效编程竞赛

解决问题

http://www.codechef.com/DEC13/problems/RECTQUER

答案 1 :(得分:0)

你的做法是正确的。来吧,你会得到AC。我实施了你在问题中写的内容,我得到了AC。使用大小为[300] [300] [10]的三维矩阵,并完全按照您的建议行事。内存要求不会太高。