题意:
有1~9数字各有a1, a2, …, a9个, 有无穷多的+和=.
问只用这些数字, 最多能组成多少个不同的等式x+y=z, 其中x,y,z∈[1,9].
等式中只要有一个数字不一样 就是不一样的

思路:
计算下可以发现, 等式最多只有36个.
然后每个数字i的上界是17-i个 可以预先判掉答案一定是36的, 然后直接暴力搜索每个等式要不要就好了.
注意剪枝即可

 const int maxn = ;
int a[maxn];
bool flag36;
int ans;
struct Equation
{
int x, y, z;
} type[];
void init()
{
flag36 = true;
ans = ;
for (int i = ; i < ; i++)
{
scanf("%d", a + i);
if (a[i] < - i)
{
flag36 = false;
}
}
} bool can(int t)
{
bool flag1 = false, flag2 = false, flag3 = false;
bool ret = true;
if (a[type[t].x] > )
{
a[type[t].x]--;
flag1 = true;
}
else ret = false; if (ret && a[type[t].y] > )
{
a[type[t].y]--;
flag2 = true;
}
else ret = false; if (ret && a[type[t].z] > )
{
a[type[t].z]--;
flag3 = true;
}
else ret = false; a[type[t].x] += flag1;
a[type[t].y] += flag2;
a[type[t].z] += flag3; return ret;
} void dfs(int t, int cnt) // 判断第t中,已经凑出了cnt个
{
if ( - t + cnt <= ans || t == ) return;
if (can(t))
{
a[type[t].x]--;
a[type[t].y]--;
a[type[t].z]--;
ans = max(ans, cnt + );
dfs(t + , cnt + );
a[type[t].x]++;
a[type[t].y]++;
a[type[t].z]++;
}
dfs(t + , cnt);
} void solve()
{
if (flag36)
{
printf("36\n");
return;
}
dfs(, );
printf("%d\n", ans);
} int main()
{
int idx = ;
for (int i = ; i < ; i++)
{
for (int j = ; i + j < ; j++)
{
type[idx++] = (Equation){i, j, i + j};
}
} int T, kase = ;
scanf("%d", &T);
while (T--)
{
printf("Case #%d: ", ++kase);
init();
solve();
}
return ;
}

最新文章

  1. css 大话盒子模型
  2. 退役&amp;&amp;搬家
  3. Linux Memcache 安装配置
  4. [原创]推荐一款强大的.NET程序内存分析工具.NET Memory Profiler
  5. NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
  6. 比Redis更快:Berkeley DB面面观
  7. [drp 8]get和post的区别,以及乱码问题的解决
  8. 有关Color和Drawable你所不知道的那些内容
  9. 玩转Android之Drawable的使用
  10. mysql2csv 和 csv2mysql 工具
  11. ThinkPHP函数详解:I方法
  12. 安装Linux系统到u盘
  13. 配置SESSION超时与请求超时
  14. BZOJ 3640: JC的小苹果 [概率DP 高斯消元 矩阵求逆]
  15. sql group句子
  16. 关于ArrayList的5道面试题
  17. 编写程序,输入一个N,返回角谷变换(达到1所需)的次数
  18. 如何用ABP框架快速完成项目(面向项目交付编程面向客户编程篇)(1) - 目录
  19. ASP.NET Core使用HttpClient的同步和异步请求
  20. lr添加md5方法,字符编码转换,urlcode编码化

热门文章

  1. arm嵌入式交叉编译工具链
  2. 输出MYSQL所有SQL语句
  3. multipath tcp experiment
  4. export a java project to runable jar
  5. jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常
  6. spring实现一对多表单的保存
  7. [解决方案] pythonchallenge level 5
  8. BZOJ 1096 仓库建设
  9. HTTP简介
  10. 探索软件工程道路上的我II (Θ∀Θ#)