題目內容:某船最高載重量為
300噸,現有重量為
101,78,92,45,301,117,85,210
的八塊金子,在不超過最高載重的情況下,從中選擇任意塊金子使船運金重量達到最高。
做法一:二進位制轉化法
做法分析:現有
8塊金子,每塊金子有兩種情況:選用或者不選用,選用可以用
1代表,不選用可以用
0代表。這樣的話從八塊金字選用情況有:
00000001
到11111111
共254
種情況。最接近船載重的情況便是最優解。
#include #include int boat_max = 300;//船的最高載重量為300噸
int weight[10] = ;//存放每塊金子重量的陣列
int b[10];//各金子有無情況的陣列
/*bin函式,用於將十進位制數字轉化成二進位制,存入陣列中*/
/*此段**隨著n的值從1到255,轉化成二進位制就是從00000001到11111111*/
void bin(int n)
for(;i < 8; i++) //當十進位制數不夠八位時,將剩下的高位補0
}int main()
max = 0; //最大值
flag = 0; //標記函式
for(i = 1; i <= n; i++)
}//迴圈結束後max就是此題目的最優解,每塊金子的選用情況可以由flag轉化成二進位制後得到。
printf("此船此次運金的最大重量為:%d噸\n", max);
printf("選用金子為:\n");
bin(flag);
for(i = 0; i < 8; i++)
}return 0;
}
做法二:動態規劃法
分析:利用陣列和動態規劃,來找到最優解。
#include #include #include file *fp, *fp1;
char fp_line[1024];
char name[50][30];
char name_temp[30];
int relation[40][40];
int hang = -1;
int cmp(char *a, char *b)
}return 1;
}int main()
if((c1 >= '0' && c1 <= '9')||c1 == ' ' || c1 == '.' || c1 == '\n' || c1 == '\t')
else //上面的判斷條件都不滿足,剩下的就是漢字
}name_number++; //字串陣列的下標加一,再存下一行的名字
}printf("各學生序號如下:\n");
for(i = 0; i < name_number; i++)
fclose(fp);
fp1 = fopen("relation.txt","rb");
while (!feof(fp1))
if(c1 == ' ' || c1 == ',' || fp_line[i+1] == '\0') //這些都是名字結束後緊接著的字元,從這裡把之前存下來的名字取出
}for(j = 0; j < 20; j++) //把name_temp賦成空,存下乙個名字用
j = 0;
continue;
}if((c1 >= '0' && c1 <= '9') || c1 == '.' || c1 == '\n')
if(flag)}}
printf("\n\n轉化後的關係矩陣為:\n");
for(i = 0; i < name_number; i++)
printf("\n");
}max = 0;
c1 = 0;
flag = 0;
for(i = 0; i < name_number; i++) //遍歷矩陣
}if(c1 > max) //遍歷一遍後,選擇第flag列的人最多
if(c1 == 0) //c1為0說明本班沒有選擇他的人
}return 0;
}
C語言程式設計題目(實用經典)3
輸入三個整數x,y,z,把這三個數從小到大輸出 define crt secure no warnings include include 輸入三個整數x,y,z,請把這三個數由小到大輸出 int main if x z if y z printf 這三個整數從小到大排列為 d d d n x,y,...
C語言程式設計題目 實用經典 10
有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第乙個人大兩歲。最後 問第乙個人,他說是10歲。請問第五個人多大?include include int calage int n return calag...
經典題目 聚會的快樂
題目 聚會的快樂 問題描述 你要組織乙個由你公司的人參加的聚會。你希望聚會非常愉快,盡可能地多找些有趣的熱鬧。但勸你不要同時邀請某個人和他的上司,因為這可能帶來爭吵。給定n個人 姓名,他的幽默係數,以及他上司的名字 程式設計找到能是幽默係數和最大的若干個人。輸入格式 party.in 第一行乙個整數...