矩陣乘法經典應用之置換

2021-07-09 21:59:31 字數 1527 閱讀 4924

學習用矩陣做置換的過程很有趣,我遇到的置換問題最開始的思路就向矩陣發展了,然而很不幸,那題時間卡的緊,用矩陣是超時的做法(反正我沒過)。不過我也意外的學習了這樣的方法:

經典的置換矩陣:

比如:1 2 3 4 ---> 2 4 1 3

設轉換矩陣是a。

給出置換方法:

表示第所以

這是那一道題(注:下面的**是超時的,我只是想用用矩陣模擬置換而已)

poj 1026 cipher

輸入:

104 5 3 7 2 8 1 6 10 9

1 hello bob

1995 cerc

解釋: n

k  string

給出置換方法:

.  表示第i位置上的字元換到

所以

#include #include #include using namespace std;

const int n=205;

int n;

char mys[n],cont[n];

struct matrixi;

int add(int a,int b)

return ans;

}matrix operator *(const matrix a,const matrix b)

return ans;

}void show(matrix mp)

cir[i]=loop;

}int k;

while(scanf("%d",&k)&&k)

ans[n+1]=0;

printf("%s\n",ans+1);

}printf("\n");

}return 0;

}

來乙個可以用矩陣置換的:

p1049送給聖誕夜的禮品

輸入:

7 5 8

6 1 3 7 5 2 4

3 2 4 5 6 7 1

7 1 3 4 5 2 6

5 6 7 3 1 2 4

2 7 3 4 6 1 5

解釋:

n,m,k

m行n列的置換矩陣

求解原序列為1,2,3,……,n的序列經過置換矩陣操作後的新序列。注意:每一行就是一次置換操作。

6 1 3 7 5 2 4 就是把6位置上的元素換到1位置上,1位置上的元素換到2位置上…… 經典的置換操作, .

粗略的講就是

#include #include #include using namespace std;

const int n=105;

struct matrix

return ans;

}void show(matrix v){

cout<

隔板法經典應用

隔板法就是在n個元素間插入 b 1 個板,即把n個元素分成b組的方法。c n 1,b 1 隔板法必須滿足三個條件 這n個元素必須相同,2 所分成的每一組至少分得乙個元素,3 分成的組別彼此差異。例如 某校組建一球隊需16人,該校共10個班級,且每個班至少分配乙個名額,共有幾種情況。c 16 1,10...

PKU 3233 經典矩陣乘法

s a a 2 a 3 ak 的乙個很好的求法是 構造這樣乙個矩陣 a a0 1 然後這個矩陣自乘k次即可,也就是矩陣套矩陣 include include const int max 65 int n,k,m,tn,mod struct mat void init void print retur...

歸併演算法經典應用 求解逆序數

在之前介紹線性代數行列式計算公式的時候,我們曾經介紹過逆序數 我們在列舉出行列式的每一項之後,需要通過逆序數來確定這一項符號的正負性。如果有忘記的同學可以回到之前的文章當中複習一下 線性代數行列式 如果忘記呢,問題也不大,這個概念比較簡單,我想大家很快就能都搞清楚。面試題當 現。我們先來回顧一下逆序...