下面是问题。我不了解的是我将如何使用rand函数而不获取任何重复值。我也不确定如何比较教授要求的转置函数中的两者。任何解释或模板,将不胜感激,谢谢!顺便说一下,这是在C ++中。
-创建一个无符号整数的动态二维正方形数组(array_one)。提示用户输入行数(最多50行)(因为该数组将是正方形的,所以也用于列数)。
-将数组传递给一个函数,该函数将使用rand()库函数将二维数组初始化为0到4000之间的随机数。这里是关键:数组不能有任何重复的值!
-创建另一个相同大小的动态二维数组(array_transpose)
-将两个数组传递给一个函数,该函数将生成array_one的转置,并返回array_transpose中的值。转置会交换数组的行和列。假设正方形数组是4×4的整数。
Transpose example:
Array One Array One Transpose
1 2 3 4 1 5 9 13
5 6 7 8 2 6 10 14
9 10 11 12 3 7 11 15
13 14 15 16 4 8 12 16
将每个数组传递给print_array函数,该函数会将具有20 x 20数组的测试用例的结果写入屏幕。
答案 0 :(得分:0)
一种生成唯一随机数的简单方法是将生成的每个数字放入unordered_set中。生成数字时,请检查它是否在unordered_set中。如果是这样,请生成一个新的,直到获得一个新的。
就移调而言,您究竟对什么感到困惑?您只需要获取随机生成的矩阵并创建一个新矩阵,该矩阵就是该矩阵的转置位置(即,交换列和行的顺序)。