四、规则组织的衍生组织——经向破斜组织数学模型的建立
生活随笔
收集整理的這篇文章主要介紹了
四、规则组织的衍生组织——经向破斜组织数学模型的建立
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基礎概念公式推到可參考該專欄下的前幾篇博文。
經向破斜組織圖:
左半部分:,3上2下1上2下,右斜,飛數為+1
右半部分:,2上1下2上3下。左斜,飛數為-1
左右兩部分,經緯紗組織點運動規律和飛數均發生變化。
一、求解組織循環數,即二維數組的行數和列數
行數的話,只需要將獲取組織的一般形式的分子分母依次求和即可,即緯紗循環數N1=Σ(ci+di),i∈[1,m]。
通過觀察經破斜組織圖發現,左右兩部分是完全對稱的,總列數為偶數。
行數的話,還是以山峰Kj為中心,N2 = 2 × Kj。
二、求第一列的元素值
,其中i=1,2,3…,N1。
三、左半部分——從第二列到Kj列,其飛數一直保持不變,可根據求規則組織的方法求解[2,Kj]列
,其中i=1,2,3...,N1;j=2,3,...,Kj
四、右半部分——Kj列和Kj + 1列經緯組織點完全相反。求解右半部分第一列元素值,即Kj + 1的值
得到左半部分的最后一列,即Kj列,通過與Kj列經緯組織點完全相反的特性,求得Kj + 1列,該列為右半部分的第一列。
計算Kj + 1列的元素:,其中i=1,2,3,…,N1。
五、右半部分——求解Kj + 2到N2列,其飛數也一直保持不變,但未原來飛數的負數,也可根據求規則組織的方法求解
,其中i=1,2,3...,N1;j=Kj + 2,...,N2
代碼實現;
#include <iostream> #include<stdio.h> using namespace std;int main() {int i,j,N1,N2,f,m,kj;int c[10],d[10],a[100][100];printf("please input m:");scanf("%d",&m);for(i=0;i<=m-1;i++){printf("please input C[%d]:",i+1);scanf("%d",&c[i]);printf("please input D[%d]:",i+1);scanf("%d",&d[i]);}printf("please input kj:");scanf("%d",&kj);N1=0;//行數初始化,即緯紗循環數初始化,之后需要累加for(i=0;i<=m-1;i++){N1=N1+c[i]+d[i];}N2=2*kj;//總列數printf("please input f:");scanf("%d",&f);if(f<0)f=N1+f;//若飛數為負數,通過公式轉換成正數 /* 對第1列進行賦值 */i=1;for(j=0;j<=m-1;j++){while(c[j]>0){a[N1-i+1][1]=1;//因為是分子,所有值都賦值為1c[j]--;i++;}while(d[j]>0){a[N1-i+1][1]=0;//因為是分母,所有值都賦值為0d[j]--;i++;}}/* 對2到kj列 進行賦值 */for(j=2;j<=kj;j++){for(i=1;i<=N1;i++){if((i+f)>N1) a[i][j] = a[i+f-N1][j-1];else a[i][j]=a[i+f][j-1];}}/* Kj + 1列賦值 */for(i=1;i<=N1;i++){if(a[i][kj]==0)a[i][kj+1]=1;elsea[i][kj+1]=0;}f=N1-f;//保證飛數為正數 /* Kj + 2到N2列賦值 */for(j=kj+2;j<=N2;j++){for(i=1;i<=N1;i++){if((i+f)>N1) a[i][j] = a[i+f-N1][j-1];else a[i][j]=a[i+f][j-1];}}/* 輸出二維數組a[i][j] */for(i=1;i<=N1;i++){for(j=1;j<=N2;j++){printf("%5d",a[i][j]);}printf("\n");}getchar();return 0; }效果圖如下:
總結
以上是生活随笔為你收集整理的四、规则组织的衍生组织——经向破斜组织数学模型的建立的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 请月嫂一月多少钱啊?
- 下一篇: VisualStudio运行C++项目检