Loading... ①男人女人孩子先令问题 ```c #include <stdio.h> int main() { int x, y, z; for (x = 0; x <= 30; x++) //遍历全部 for (y = 0; y <= 30; y++) //遍历全部 for (z = 0; z <= 30; z++) //遍历全部 if (3 * x + 2 * y + z == 50 && x + y + z == 30) //判断语句 printf("%d,%d,%d\n", x, y, z); return 0; } ``` ②读取学生成绩,并且输出最大值 ```c #include <stdio.h> int main() { int score, i, max; max = 0; for (i = 0; i <= 10; i++) { scanf("%d", &score); if (score > max) //判断语句 max = score; } printf("%d", max); return 0; } ``` ③1!+.....+100!出现内存溢出,使用long long的for循环的实现. ```c #include <stdio.h> int main() { long long item, i, j; long long sum = 0; for (i = 1; i <= 100; i++) { item = 1; for (j = 1; j <= i; j++) { item = item * j; } sum = sum + item; } printf("%lld", sum); return 0; } ``` ④一夫一妻问题? ```c #include <stdio.h> int main() { char i, j, k; for (i = 'X'; i <= 'Z'; i++) for (j = 'X'; j <= 'Z'; j++) for (k = 'X'; k <= 'Z'; k++) if (i != j && i != k && j != k) { if (i != 'X' && k != 'X' && k != 'Z') printf("A--%c,B--%c,C--%c", i, j, k); } return 0; } ``` 最后修改:2023 年 09 月 27 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏噢~
2 条评论
推荐博 ̄﹃ ̄主做八皇后问题
国际象棋中皇后的威力巨大,攻击范围是同一行、同一列以及同一斜行,因此,符合条件的 8 个皇后必须都不在同一行、同一列或者同一斜行上。
由于每一行中只能放入一个皇后,所以可以使用一个长度为 8 的序列,依次设入每行中皇后所在的列数,以此来表示皇后的放置状态。当某一行还没有置入皇后时,即该行没有一列上有皇后,记为 0;而每次置入新的皇后时,如果列数不是序列中已有的,就说明没有皇后在同一列中。这样,不同行、不同列就能很容易的判定了。
那么,在置入新的皇后时,就只需要保证它与已有的皇后都不在同一斜行上了。如果一个皇后在 m 行 k 列,那么在 m+n 行,最多只有两个位置和它在同一斜行上,而且这两个位置距离它的横向距离等于纵向距离,也就是说最多
只有 (m+n,k+n) 和(m+n,k-n)这两个位置与这个皇后在同一斜行上。
这样,只要把每个皇后在每一行的所有情况都检查一遍,就可以知道共有多少种情况满足要求了。
经过上面的抽象分析,我们只需要在集算器中,通过循环计算来完成这些判断就行了。具体代码如下:
ABCD1=[0]*8>i=12for i>0>A1(i)=A1(i)+13if A1(i)==9>A1(i)=0,i=i-1next4if i==1>i=2next5=A1(i)=A1.to(i-1)6if C5.pos(B5)>0next7else if C5.pselect(i-#==abs(B5-~))>0next8>i=i+19if i==9>C1=C1 | A1.conj@s()>A1(8)=0,i=710=C1.len()
第 1 行,A1 就是记录皇后放置状态的序列;B1 定义了一个变量 i,用来在计算时记录当前放置皇后的行。
第 2 行代码,每循环一次,就把当前行的皇后下移 1 列,用这样的方法遍历行中每个位置。
第 3 行代码,如果棋子移到了第 9 列,说明当前行的棋子已经完成了所有位置的循环,此时,应该把当前行的记录复原为 0,并将 i 减 1,可以返回去继续上一行的遍历;特别的,当第 1 行也全部循环后,说明完成了遍历,此时 i 被设为 0,停止循环。
第 4 行代码,在移动第 1 行皇后时,可以不用判断,直接开始放置第 2 个皇后。
第 6 行代码,判断已放好的皇后中,是否存在同一列的;
第 7 行代码,判断已放好的皇后中,是否存在同一斜行的。如果既没有同一列的,也没有同一斜行的,就可以继续放置下一行的皇后了。
如果此时 8 个皇后都放置成功,则在第 9 行代码中记录下当前每个皇后的位置。