c 排列組合演算法

2021-08-22 12:19:29 字數 4099 閱讀 9217

combinatorics.cs**清單

usingsystem;

usingsystem.collections;

usingsystem.data;

//////組合數學函式集

///publicclasscombinatorics

returndt;

} ///

///連乘積函式

///publicstaticintproduct(intstart,intfinish)

//////階乘函式

///publicstaticintfactorial(intn)

//////排列數函式

///publicstaticintarrangecount(intm,intn)

//////生成排列表函式

///publicstaticint[,]arrange(intm,intn)

//////生成組合表函式

///publicstaticint[,]combination(intm,intn) }

//////組合函式

//////返回值陣列

///可供選擇的元素陣列

///目標選定元素個數

///當前返回值陣列的列座標

///當前返回值陣列的行座標

privatestaticvoidcombination(refint[,]reslut,arraylistelements,intm,intx,inty)

elements.insertrange(0,tmpelements);//一次性把上述迴圈刪除的可選元素恢復到可選元素陣列中

} ///

///返回由index指定的可選元素值,並在陣列中刪除之,再從y行開始在x列中連續寫入subcomb個值

///privatestaticintremoveandwrite(arraylistelements,intindex,refint[,]reslut,intx,inty,intcount)

//////清理所有正在使用的資源。

///protectedoverridevoiddispose(booldisposing) }

base.dispose(disposing);

} #regionwindows窗體設計器生成的**

//////設計器支援所需的方法-不要使用**編輯器修改

///此方法的內容。

///privatevoidinitializecomponent()

); this.numm.minimum=newsystem.decimal(newint);

this.numm.name="numm";

this.numm.size=newsystem.drawing.size(56,26);

this.numm.tabindex=4;

this.numm.value=newsystem.decimal(newint);

// //numn

// this.numn.backcolor=system.drawing.color.bisque;

this.numn.font=newsystem.drawing.font("宋體",12f);

this.numn.forecolor=system.drawing.color.teal;

this.numn.location=newsystem.drawing.point(80,40);

this.numn.maximum=newsystem.decimal(newint);

this.numn.minimum=newsystem.decimal(newint);

this.numn.name="numn";

this.numn.size=newsystem.drawing.size(56,26);

this.numn.tabindex=5;

this.numn.value=newsystem.decimal(newint);

// //btngo

// this.btngo.backcolor=system.drawing.color.paleturquoise;

this.btngo.location=newsystem.drawing.point(184,24);

this.btngo.name="btngo";

this.btngo.size=newsystem.drawing.size(88,32);

this.btngo.tabindex=6;

this.btngo.text="go!";

this.btngo.click+=newsystem.eventhandler(this.btngo_click);

// //statusbar1

// this.statusbar1.location=newsystem.drawing.point(0,453);

this.statusbar1.name="statusbar1";

this.statusbar1.panels.addrange(newsystem.windows.forms.statusbarpanel);

this.statusbar1.showpanels=true;

this.statusbar1.size=newsystem.drawing.size(704,32);

this.statusbar1.tabindex=7;

this.statusbar1.text="statusbar1";

// //panelerrmsg

// this.panelerrmsg.autosize=system.windows.forms.statusbarpanelautosize.contents;

this.panelerrmsg.text="idle";

this.panelerrmsg.width=39;

// //frmtest

// this.autoscalebasesize=newsystem.drawing.size(6,14);

this.clientsize=newsystem.drawing.size(704,485);

this.controls.add(this.statusbar1);

this.controls.add(this.btngo);

this.controls.add(this.numn);

this.controls.add(this.numm);

this.controls.add(this.domainfunction);

this.controls.add(this.gridshow);

this.maximizebox=false;

this.name="frmtest";

this.startposition=system.windows.forms.formstartposition.centerscreen;

this.text="frmtest";

((system.componentmodel.isupportinitialize)(this.gridshow)).endinit();

((system.componentmodel.isupportinitialize)(this.numm)).endinit();

((system.componentmodel.isupportinitialize)(this.numn)).endinit();

((system.componentmodel.isupportinitialize)(this.panelerrmsg)).endinit();

this.resumelayout(false);

} #endregion

//////應用程式的主入口點。

///[stathread]

staticvoidmain()

privatevoidbtngo_click(objectsender,system.eventargse)

else

panelerrmsg.text="inputnumberisinvalid";

} }

}

排列 組合 演算法 C

class b c list,3 console.writeline a list,0,4 對陣列進行組合操作,選取selectcount個元素進行組合 即將進行組合操作的陣列 選取的元素的個數 static void c listlsarray,int selectcount while true...

排列組合演算法

在開發的過程中很難免會到排列組合,剛開始通過for迴圈來搞定。但是對於工作了近五年的我而已,不能像 新人那樣做了。如果所要組合的集合大於40,你不可能寫40個for迴圈吧!這裡使用了數學的演算法,到底是啥演算法,高人也沒說!不過我把它的思想提公升了一下。如下 ifndef combination h...

排列組合演算法

1.排列演算法 include define max num 100 void print int n,int num void swap int a,int b int arrange int i,int n,int num i return count int combination int u...