算法题目:Arnold变换是一种常见的图像置乱技术,Arnold变换定义如下:(C++语言实现)
分析
如果要将二维数组全部遍历,时间复杂度会过大。我能想到的就是用一个点来近似代替整个方阵的变换。由于i和j每次变换时都要对维数取余,那么每大一阶是会影响其还原周期的,所以利用动态规划思想选择(n-1,n-1)点作为标志点应该是可行的。这个想法没有进行严谨的数学推导不知道其正确性,但是目前可以跑出样例。
实现
如果要将二维数组全部遍历,时间复杂度会过大。我能想到的就是用一个点来近似代替整个方阵的变换。由于i和j每次变换时都要对维数取余,那么每大一阶是会影响其还原周期的,所以利用动态规划思想选择(n-1,n-1)点作为标志点应该是可行的。这个想法没有进行严谨的数学推导不知道其正确性,但是目前可以跑出样例。