清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 | // 篮球对阵.cpp : 定义控制台应用程序的入口点。 // 本程序采用赛制为:共有9个班参赛,每轮通过抽签,两两对决,单场淘汰制,在进入决赛之前每一轮都会有一只轮空球队。 // 本程序每组对决时采用固定胜率,此胜率为程序作者初步估计各班水平给出的胜率,不能完全反映真实情况。 // 对决时根据胜率,选择随机数的方式确定胜负与否,每组对决取10次随机数,根据随机数所在的区域确定最终胜负关系, // 对于随机数所在区域的解释:例如A班对B班获胜几率为60%,则取1-100中的随机数字,数字在1-60内则A班胜,数字在61-100内则B班胜。 // 如在两边获胜的区域各取到了5次,则程序再重新抽取10次随机数,直至这10次中两边区域取到的数字不相同为止。 // 本程序将会对整个的比赛流程模拟10次,程序将会在模拟期间输出每次抽签的结果以及最终的胜负关系,在10次模拟结束后,系统将会给出夺冠次数最多的球队,和我班(4班)在每轮被淘汰的次数。 // 本模拟程序仅供个人练习使用,并不代表真实的赛制和比赛结果,不成为可靠参考数据。 #include "stdafx.h" #include "iostream" #include "ctime" #include "windows.h" using namespace std; int max2(int a, int b) { int x; if (a <= b) { x = a; a = b; b = x; } return a; } int max9(int a, int b, int c, int d, int e, int f, int g, int h, int i) { a = max2(a, b); b = max2(c, d); c = max2(e, f); d = max2(g, h); e = i; a = max2(a, b); b = max2(c, d); c = e; a = max2(a, b); b = c; a = max2(a, b); return a; } int whowin(int a, int b) { int x; if (a >= b) { x = a; a = b; b = x; } srand(unsigned(time(0))); int i, j, n, k = 0, l = 0; if (a == 1 && (b == 2 || b == 6 || b == 9) || (a == 3 && (b == 6 || b == 9)) || (a == 4 && b == 6) || (a == 5 && b == 6)) n = 20; else if ((a == 1 && b == 7) || (a == 3 && b == 7)) n = 25; else if ((a == 1 && (b == 4 || b == 5)) || (a == 1 && (b == 3 || b == 8)) || (a == 2 && b == 6) || (a == 3 && (b == 4 || b == 5)) || (a == 3 && b == 8) || (a == 4 && b == 9) || (a == 5 && (b == 7 || b == 9))) n = 30; else if ((a == 4 && b == 7) || (a == 5 && b == 8)) n = 40; else if ((a == 2 && (b == 7 || b == 9)) || (a == 4 && b == 8)) n = 50; else if ((a == 6 && b == 9) || (a == 7 && b == 9)) n = 60; else if ((a == 4 && b == 5) || (a == 6 && b == 7) || (a == 7 && b == 8)) n = 70; else if ((a == 2 && b != 6 && b != 7 && b != 9) || (a == 6 && b == 8)) n = 80; else n = 30; for (i = 1;i <= 10;i++) { j = rand() % 100 + 1; if (0 < j&&j <= n) k++; else l++; if (k == l) i = 1; continue; } if (k > l) return a; else return b; } int main() { int round; int win1 = 0, win2 = 0, win3 = 0, win4 = 0, win5 = 0, win6 = 0, win7 = 0, win8 = 0, win9 = 0; int ro1 = 0, ro2 = 0, ro3 = 0, ro4 = 0, nro = 0; for (round = 1;round <= 10;round++) { int a, b, c, d, e, f, g, h, i; int firstroundout = 0, secondroundout = 0, thirdroundout = 0, fourthroundout = 0, champion = 0; srand(unsigned(time(0))); cout << "第" << round << "次模拟结果" << endl; int z[10] = { 0,1,2,3,4,5,6,7,8,9 }; a = rand() % 9 + 1; z[a] = 0; b = rand() % 9 + 1; while (z[b] == 0) b = rand() % 9 + 1; z[b] = 0; c = rand() % 9 + 1; while (z[c] == 0) c = rand() % 9 + 1; z[c] = 0; d = rand() % 9 + 1; while (z[d] == 0) d = rand() % 9 + 1; z[d] = 0; e = rand() % 9 + 1; while (z[e] == 0) e = rand() % 9 + 1; z[e] = 0; f = rand() % 9 + 1; while (z[f] == 0) f = rand() % 9 + 1; z[f] = 0; g = rand() % 9 + 1; while (z[g] == 0) g = rand() % 9 + 1; z[g] = 0; h = rand() % 9 + 1; while (z[h] == 0) h = rand() % 9 + 1; z[h] = 0; i = rand() % 9 + 1; while (z[i] == 0) i = rand() % 9 + 1; cout << "第一轮对阵:" << endl; cout << a << "班对阵" << b << "班" << endl; cout << c << "班对阵" << d << "班" << endl; cout << e << "班对阵" << f << "班" << endl; cout << g << "班对阵" << h << "班" << endl; cout << i << "班轮空" << endl; a = whowin(a, b); b = whowin(c, d); c = whowin(e, f); d = whowin(g, h); e = i; if (a != 4 && b != 4 && c != 4 && d != 4 && e != 4) { firstroundout++; secondroundout--; thirdroundout--; fourthroundout--; } cout << "对阵结果:" << endl; cout << a << "班获胜" << endl; cout << b << "班获胜" << endl; cout << c << "班获胜" << endl; cout << d << "班获胜" << endl; int a1, b1, c1, d1, e1; int y[6] = { 0,a,b,c,d,e }; a1 = rand() % 5 + 1; a = y[a1]; y[a1] = 0; b1 = rand() % 5 + 1; while (y[b1] == 0) b1 = rand() % 5 + 1; b = y[b1]; y[b1] = 0; c1 = rand() % 5 + 1; while (y[c1] == 0) c1 = rand() % 5 + 1; c = y[c1]; y[c1] = 0; d1 = rand() % 5 + 1; while (y[d1] == 0) d1 = rand() % 5 + 1; d = y[d1]; y[d1] = 0; e1 = rand() % 5 + 1; while (y[e1] == 0) e1 = rand() % 5 + 1; e = y[e1]; cout << "第二轮对阵:" << endl; cout << a << "班对阵" << b << "班" << endl; cout << c << "班对阵" << d << "班" << endl; cout << e << "班轮空" << endl; a = whowin(a, b); b = whowin(c, d); c = e; if (a != 4 && b != 4 && c != 4) { secondroundout++; thirdroundout--; fourthroundout--; } cout << "对阵结果:" << endl; cout << a << "班获胜" << endl; cout << b << "班获胜" << endl; int a2, b2, c2; int x[4] = { 0,a,b,c }; a2 = rand() % 3 + 1; a = x[a2]; x[a2] = 0; b2 = rand() % 3 + 1; while (x[b2] == 0) b2 = rand() % 3 + 1; b = x[b2]; x[b2] = 0; c2 = rand() % 3 + 1; while (x[c2] == 0) c2 = rand() % 3 + 1; c = x[c2]; cout << "第三轮对阵:" << endl; cout << a << "班对阵" << b << "班" << endl; cout << c << "班轮空" << endl; a = whowin(a, b); if (a != 4 && c != 4) { thirdroundout++; fourthroundout--; } cout << "对阵结果:" << endl; cout << a << "班获胜" << endl; cout << "决赛对阵:" << endl; cout << a << "对阵" << c << "班" << endl; a = whowin(a, c); if (a != 4) fourthroundout++; else champion++; cout << "对阵结果:" << endl; cout << a << "班获胜" << endl; cout << a << "班获得冠军" << endl; if (secondroundout < 0) secondroundout = 0; if (thirdroundout < 0) thirdroundout = 0; if (fourthroundout < 0) fourthroundout = 0; if (a == 1) win1++; else if (a == 2) win2++; else if (a == 3) win3++; else if (a == 4) win4++; else if (a == 5) win5++; else if (a == 6) win6++; else if (a == 7) win7++; else if (a == 8) win8++; else win9++; ro1 += firstroundout; ro2 += secondroundout; ro3 += thirdroundout; ro4 += fourthroundout; nro += champion; Sleep(1 * 1000); } int champ; if (max9(win1, win2, win3, win4, win5, win6, win7, win8, win9) == win1) champ = 1; else if (max9(win1, win2, win3, win4, win5, win6, win7, win8, win9) == win2) champ = 2; else if (max9(win1, win2, win3, win4, win5, win6, win7, win8, win9) == win3) champ = 3; else if (max9(win1, win2, win3, win4, win5, win6, win7, win8, win9) == win4) champ = 4; else if (max9(win1, win2, win3, win4, win5, win6, win7, win8, win9) == win5) champ = 5; else if (max9(win1, win2, win3, win4, win5, win6, win7, win8, win9) == win6) champ = 6; else if (max9(win1, win2, win3, win4, win5, win6, win7, win8, win9) == win7) champ = 7; else if (max9(win1, win2, win3, win4, win5, win6, win7, win8, win9) == win8) champ = 8; else champ = 9; cout << "经过10次模拟后,模拟冠军次数最多的班级为:" << champ << "班" << endl; cout << "四班各轮晋级次数:" << endl; cout << "第一轮被淘汰:" << ro1 << "次" << endl; cout << "第二轮被淘汰:" << ro2 << "次" << endl; cout << "第三轮被淘汰:" << ro3 << "次" << endl; cout << "获得亚军:" << ro4 << "次" << endl; cout << "获得冠军:" << nro << "次" << endl; system("pause"); return 0; } |