考虑方程组
x'=A(t)x, (*)
其中A(t)是区间a≤t≤b上的连续n×n矩阵,它的元为aij(f)(i,j=1,2,…,n).
算法设计:给定n及n个元素{1,2,...,n}的一个排列,计算出这个排列的字典序值,以及按字典序排列的下一个排列.
数据输入:由文件input.txt提供输入数据.文件的第1行是元素个数n.接下来的1行
是n个元素{1,2,...n}的一个排列.
结果输出:将计算出的排列的字典序值和按字典序排列的下一个排列输出到文件output.txt.文件的第1行是字典序值,第2行是按字典序排列的下一个排列.
指定n的值,这里只计算为n奇数的魔方。
把魔方数存储在二维数组中,首先把1放在第0行的中间,剩下的数2,3,…,n2依次向上移动一行,并向右移动一列。当可能越过数组边界时需要“绕回”到数组的另一端。例如,如果需要把下一个数放到-1行,就将其存储到n-1行(最后一行);如果需要把下一个数放到第n列,就将其到第0列。如果某个特定的数组元素已被占用,就把该数存储在前一个数的正下方。
试证明:有可能从初始输入序列1,2,…,n,利用一个栈得到输出序列p1,p2,…,pn(p1,p2,…,pn是1,2,…,n的一种排列)的充分必要条件是,不存在这样的下标i,j,k,满足i<j<k同时pj<pk<pi。