国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

生成魔方陣(周記05-03)

2024-07-21 02:24:41
字體:
供稿:網(wǎng)友
最近加緊學(xué)c#,同時(shí)又想再看看算法。誰要咱們?cè)诳蒲锌冢褪且粋€(gè)自己的時(shí)間多,當(dāng)然money也就少些了。

書買了不少,什么《21天學(xué)通c#》、《c#primer》還有《microsoft .net框架程序設(shè)計(jì)(修訂版)》。當(dāng)然這些書的選擇是本人看了不少書評(píng)后才買的,看了看都是不錯(cuò)的選擇,好書!

書雖好但也要人用心來看啊,本人利用業(yè)余時(shí)間基本已瀏覽一遍,更細(xì)的知識(shí)點(diǎn)就要在以后的學(xué)習(xí)中好好掌握了。

說到這里,說出來你死都不會(huì)相信我在單位還是個(gè)小頭,平日里受盡老老少少、上上下下的“氣”,只有下班后在書中找到一刻安寧。讀書的目的至于此可見已是一種悲哀了。

我下定決心,不論單位的事和家里的事有多忙,每周寫一篇學(xué)習(xí)周記,而非日記,日記是肯定沒有時(shí)間來寫的了。

先易后難,看了一下很久前買的一本《程序員高級(jí)程序員級(jí) 程序設(shè)計(jì)(第二版)》這本書上有不少好的算法例子,它們?cè)瓉矶际怯胏寫的,我用c#重寫一遍,在做一個(gè)小工具展示一下,這樣比較直觀。

第一個(gè)我們來看看p96上的生成魔方陣問題。

魔方陣是指元素為自然數(shù)1,2,…,n2 的n×n方陣,每個(gè)元素值均不相等,每行、列及主、副對(duì)角線上各n個(gè)元素之和都相等。

對(duì)奇階魔方陣,可用dole rob算法生成,其過程為:從1開始,以此插入各自然數(shù),直到n2為止。選擇插入位置原則為:

a. 第一個(gè)位置在第一行的正中;

b. 新位置應(yīng)當(dāng)處于最近一個(gè)插入位置右上方,但如右上方位置已超出方陣上邊界,則新位置取應(yīng)選列的最下一個(gè)位置;如超出右邊界則新邊界取應(yīng)選行的最左一個(gè)位置;

c. 若最近一個(gè)插入元素為n的整數(shù)倍,則選下面一行同列的位置為新位置。

本算法的實(shí)現(xiàn)就需要用到二維整數(shù)數(shù)組實(shí)現(xiàn)方陣。

核心算法如下:

private void button1_click(object sender, system.eventargs e)

{ //這部分為生成魔方陣的dole rob算法。

int count,curi,curj;

int i,j;

int[,] magic=new int[3,3];

string a;





curi=0;

curj=1;

for(count=1;count<=9;count++)

{

magic[curi,curj]=count;

if((count%3)==0)//最近一個(gè)插入元素為階數(shù)的整數(shù)倍,則選下面一行同列上的位置為新位置。

{

curi+=1;

continue;

}

curi=curi-1;

curj=curj+1;

if(curi<0)

curi+=3;

else if(curj==3)

curj-=3;

}

textbox1.appendtext("/n");//下面在textbox1中顯示生成的魔方陣

for (i=0;i<3;i++)

{ textbox1.appendtext("/n");



for(j=0;j<3;j++)

{ a = convert.tostring(magic[i,j]);

textbox1.appendtext(a);

textbox1.appendtext(" ");



}

textbox1.appendtext("/n");

}

label1.text="本例中的魔方陣的階數(shù)這里取3,當(dāng)然也可以增加控制階數(shù)的控件,為了簡(jiǎn)單這里不再給出。";



}





圖1 點(diǎn)擊“生成魔方塊”按鈕前







圖2 點(diǎn)擊“生成魔方塊”按鈕后



在重寫改算法時(shí),有幾個(gè)問題給我印象很深:

a. magic[curi,curj]是這樣寫,而不是寫成magic[curi],[curj],后者是c的寫法。

b. a = convert.tostring(magic[i,j])這一句很關(guān)鍵,否則結(jié)果無法在textbox1中顯示,convert類是在system命名空間中的,它的一些方法轉(zhuǎn)換數(shù)據(jù)類型起來很有用。為什么要轉(zhuǎn)換,因?yàn)閠extbox1.appendtext(a)中a一定要為string類型。

c. c#語言里是嚴(yán)格區(qū)分大小寫的。

好了,就寫到這里吧,你別說做你喜歡的事情即使累心里也甜甜的。

明天又要………,當(dāng)老百姓最快活但老百姓的獎(jiǎng)金畢竟少些,矛盾啊,嘿嘿,j。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 晴隆县| 调兵山市| 高邮市| 东山县| 修文县| 惠安县| 鄯善县| 嘉兴市| 沙洋县| 长沙市| 禹城市| 普宁市| 北流市| 建宁县| 科技| 紫云| 白玉县| 海伦市| 山丹县| 天门市| 开原市| 民勤县| 木兰县| 资源县| 东阳市| 新龙县| 桑日县| 罗山县| 会同县| 科技| 永平县| 左贡县| 马边| 双牌县| 宝山区| 绵竹市| 重庆市| 无为县| 策勒县| 龙游县| 祁东县|