精華區beta ck49th318 關於我們 聯絡資訊
※ 引述《weywey (愛毛頭的威..@_@)》之銘言: : ※ 引述《Big (人人快樂又開心!)》之銘言: : : 對呀 : : 對呀 : : 火火火火火 : : 氣死我了 : : 靠................ : 嗯......人家寫程式 : 你別那麼火大嘛..... 實在是看不太去了,沒想到大家居然忘了我的存在…… n-queen 實在是非常高中的問題啊……用Java寫當然也 是不錯啦,但是還是要養成好習慣啊,尤是縮排、變數 名稱啦,都要有固定的風格,要不然別人怎看得下去呢? 比較起來,我們的Java作業真的是比較有挑戰性多了…… 我們要寫一個數位電路的模擬程式,就是有很多and or xor gate的模擬器,有點像電機系說……放在web上……大家可以 自己設計一些電路玩玩看喔……選取各種gate後在空白處按 下就可以放一個,用wire可以連接每一個gate喔……還有燈 炮、電源、加法器等有趣的東東……但是你的browser要支援 Java 1.1.5以上才可以看得到喔!! http://www.csie.ntu.edu.tw/~b6506064/Circuits 此外……給大家看一下我高一時寫的n-queen...非遞迴版的…… #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <mem.h> void step_forward(void); void show_result(void); void save_result(void); #define COUNT_QUEEN 8 #define USED 0 #define UN_USED -1 #define ATTACKING 1 #define NON_ATTACKING 0 char *cheak_LT_RB; char *cheak_RT_LB; char *result; char *data[100]; char row=0; int count_result=1; void main(void) { char i; cheak_LT_RB=(char *)malloc(sizeof(char)*COUNT_QUEEN*2); cheak_RT_LB=(char *)malloc(sizeof(char)*COUNT_QUEEN*2); result=(char *)malloc(sizeof(char)*COUNT_QUEEN); for(i=0;i<COUNT_QUEEN;i++) result[i]=UN_USED; for(i=0;i<(COUNT_QUEEN*2);i++) { cheak_LT_RB[i]=NON_ATTACKING; cheak_RT_LB[i]=NON_ATTACKING; } printf("\nStart to find the solution(s) of Non-attacking queens!"); step_forward(); printf("\nProgram finished!"); getch(); } void step_forward(void) { char i,c1,c2; for(i=0;i<COUNT_QUEEN;i++) { if(result[i]!=UN_USED) continue; if((cheak_RT_LB[c2=(i+row)]==ATTACKING)||(cheak_LT_RB[c1=(i-row+COUNT_QUEEN)]==ATTACKING)) continue; result[i]=row; row++; cheak_LT_RB[c1]=ATTACKING; cheak_RT_LB[c2]=ATTACKING; if(row==COUNT_QUEEN) { show_result(); count_result++; } else step_forward(); cheak_LT_RB[c1]=NON_ATTACKING; cheak_RT_LB[c2]=NON_ATTACKING; row--; result[i]=UN_USED; } } void show_result(void) { char i; clrscr(); for(i=0;i<COUNT_QUEEN;i++) { gotoxy(i+3,1); printf("%i",i); gotoxy(1,i+2); printf("%i",i); gotoxy(i+3,result[i]+2); printf("*"); } gotoxy(1,COUNT_QUEEN+3); printf("%i",count_result); } void save_result(void) { data[count_result]=(char *)malloc(sizeof(char)*COUNT_QUEEN); movmem(result,data[count_result],sizeof(char)*COUNT_QUEEN); } -- ------------------------------------------------------------------ James Chou-Han Yang Email : chyang@robot.csie.ntu.edu.tw ------------------------------------------------------------------ -- ※ 發信站: 批踢踢實業坊(ptt.m8.ntu.edu.tw) ◆ From: t196-230.dialup