好吧,我承认我是被室友坑了,突然在寝室讨论起这个,从晚上9点多一直搞到了现在,才搞完+_+,不是彻底,但是搞定了大部分的问题
问题
1,4硬币称重问题
2,8硬币称重问题
3,12硬币称重问题
传送门:关于问题的解
12硬币问题及解:
12个硬币不知轻重如何用三次称出来?
解法:(要看挺久才能明白)
传送门:
代码实现:(都聚在一起了)
8枚硬币的没写,因为跟4枚硬币差不多,注意几个程序我是隔开的
//硬币称重问题求解//不知轻重类型,模拟第四块为最不合格的那块硬币// author:seen// time:2015-09-20// 比较精彩的地方在于判断轻重//4枚硬币不知道轻重#include <iostream>using namespace std;void main(){ int num[5]={0,1,3,1,1}; if(num[1]+num[2]>num[3]+num[4]){ if(num[3]>num[4]){ cout<<num[4]; } else if(num[3]<num[4])cout<<num[3]; else{ if(num[1]>num[2]) cout<<num[1]; else cout<<num[2]; } } else{ if(num[1]>num[2]){ cout<<num[2]; } else if(num[1]<num[2])cout<<num[1]; else{ if(num[3]>num[4]) cout<<num[3]; else cout<<num[4]; } }}//12枚硬币判重问题,有一枚偏重#include <iostream>using namespace std;void main(){ int num[13] ={0,8,1,1,1,1,1,1,1,1,1,1,1}; if(num[1]+num[2]+num[3]+num[4]+num[5]==num[6]+num[7]+num[8]+num[9]+num[10]){ if(num[11]>num[12]){ cout<<num[11]; } else cout<<num[12]; } else if(num[1]+num[2]+num[3]+num[4]+num[5]<num[6]+num[7]+num[8]+num[9]+num[10]){ if(num[6]+num[7]>num[8]+num[9]){ if(num[6]>num[7]) cout<<num[6]; else cout<<num[7]; } else if(num[6]+num[7]==num[8]+num[9]){ cout<<num[10]; } else{ if(num[8]>num[9]) cout<<num[8]; else cout<<num[9]; } } else{ if(num[1]+num[2]>num[3]+num[4]){ if(num[1]+num[2]) cout<<num[1]; else cout<<num[2]; } else if(num[1]+num[2]<num[3]+num[4]){ if(num[3]>num[4]) cout<<num[3]; else cout<<num[4]; } else cout<<num[5]; }}//12枚硬币判重问题,有一枚不知道轻重#include <iostream>using namespace std;void main(){ int num[13]={0,1,1,1,2,1,1,1,1,1,1,1,1}; if(num[1]+num[2]+num[3]+num[4]==num[5]+num[6]+num[7]+num[8]){ if(num[1]+num[9]==num[10]+num[11]){ cout<<num[12]; } else if(num[1]+num[9]<num[10]+num[11]){ if(num[10]==num[11]) cout<<num[9]; else if(num[10]>num[11]) cout<<num[10]; else cut<<num[11]; } else{ if(num[10]>num[11]) cout<<num[11]; else if(num[10]<num[11]) cout<<num[10]; else cout<<num[9]; } } else if(num[1]+num[2]+num[3]+num[4]<num[5]+num[6]+num[7]+num[8]){ if(num[1]+num[2]+num[5]==num[3]+num[6]+num[9]){ if(num[8]==num[7]) cout<<num[4]; else if(num[7]>num[8]) cout<<num[7]; else cout<<num[8]; } else if(num[1]+num[2]+num[5]<num[3]+num[6]+num[9]){ if(num[1]==num[2]) cout<<num[6]; else if(num[1]<num[2]) cout<<num[1]; else cout<<num[2]; } else{ if(num[1]==num[3]) cout<<num[5]; else cout<<num[3]; } } else{ if(num[1]+num[2]+num[5]==num[3]+num[6]+num[9]){ if(num[8]==num[7]) cout<<num[4]; else if(num[7]>num[8]) cout<<num[7]; else cout<<num[8]; } else if(num[1]+num[2]+num[5]>num[3]+num[6]+num[9]){ if(num[1]==num[2]) cout<<num[6]; else if(num[1]<num[2]) cout<<num[2]; else cout<<num[1]; } else{ if(num[1]==num[3]) cout<<num[5]; else cout<<num[3]; } }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126