學習用矩陣做置換的過程很有趣,我遇到的置換問題最開始的思路就向矩陣發展了,然而很不幸,那題時間卡的緊,用矩陣是超時的做法(反正我沒過)。不過我也意外的學習了這樣的方法:
經典的置換矩陣:
比如:1 2 3 4 ---> 2 4 1 3
設轉換矩陣是a。
給出置換方法:
表示第所以
這是那一道題(注:下面的**是超時的,我只是想用用矩陣模擬置換而已)
poj 1026 cipher
輸入:解釋: n104 5 3 7 2 8 1 6 10 9
1 hello bob
1995 cerc
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...
歸併演算法經典應用 求解逆序數
在之前介紹線性代數行列式計算公式的時候,我們曾經介紹過逆序數 我們在列舉出行列式的每一項之後,需要通過逆序數來確定這一項符號的正負性。如果有忘記的同學可以回到之前的文章當中複習一下 線性代數行列式 如果忘記呢,問題也不大,這個概念比較簡單,我想大家很快就能都搞清楚。面試題當 現。我們先來回顧一下逆序...