习题2-6豆包方案

small_rain 发表于 5天前 · 关联问题 排列

#include <stdio.h> //习题2-6 豆包方案 //核心算法,对拆掉的三位数在数组位置用1进行标记,最后计算这些1是否等于9 //豆包bug重复数字出现也会标记,标记时要去重 int main() { int x, y, z; int arr[10]; for (int i = 123; i <= 329; i++) { x = i; y = x * 2; z = x * 3; for (int i = 0; i < 10; i++) arr[i] = 0; if (!arr[x / 100] && !arr[x / 10 % 10] && !arr[x % 10]) arr[x / 100] = arr[x / 10 % 10] = arr[x % 10] = 1; else continue; if (!arr[y / 100] && !arr[y / 10 % 10] && !arr[y % 10]) arr[y / 100] = arr[y / 10 % 10] = arr[y % 10] = 1; else continue; if (!arr[z / 100] && !arr[z / 10 % 10] && !arr[z % 10]) arr[z / 100] = arr[z / 10 % 10] = arr[z % 10] = 1; else continue; int sum = 0; for (int i = 1; i < 10; i++) { sum += arr[i]; if(sum == 9) printf("%d %d %d\n", x, y, z); } } return 0; }