2 条题解
-
1
这里分享一种“简便的手动枚举方法” 不难发现,共有27种解决方案,那么不妨手动枚举27种情况,但是考虑到手写27种可能性的if语句有些麻烦,我们不妨先写一个简单的生成器,有:
#include <iostream> char op(int t) { if (t == 0) return '+'; if (t == 1) return '-'; return '*'; } int main() { bool first = true; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { char o1 = op(i), o2 = op(j), o3 = op(k); // 27 种情况的判断与输出,第一条用 if,其余用 else if std::cout << (first ? "if(" : "else if("); std::cout << 'a' << o1 << 'b' << o2 << 'c' << o3 << "d==24) "; std::cout << "std::cout<<"; std::cout << 'a' << "<<" << "\"" << o1 << "\"" << "<<"; std::cout << 'b' << "<<" << "\"" << o2 << "\"" << "<<"; std::cout << 'c' << "<<" << "\"" << o3 << "\"" << "<<"; std::cout << 'd' << "<<std::endl;" << std::endl; first = false; } } } std::cout << "else std::cout<<-1<<std::endl;" << std::endl; return 0; }运行,得到:
if(a+b+c+d==24) std::cout<<a<<"+"<<b<<"+"<<c<<"+"<<d<<std::endl; else if(a+b+c-d==24) std::cout<<a<<"+"<<b<<"+"<<c<<"-"<<d<<std::endl; else if(a+b+c*d==24) std::cout<<a<<"+"<<b<<"+"<<c<<"*"<<d<<std::endl; else if(a+b-c+d==24) std::cout<<a<<"+"<<b<<"-"<<c<<"+"<<d<<std::endl; else if(a+b-c-d==24) std::cout<<a<<"+"<<b<<"-"<<c<<"-"<<d<<std::endl; else if(a+b-c*d==24) std::cout<<a<<"+"<<b<<"-"<<c<<"*"<<d<<std::endl; else if(a+b*c+d==24) std::cout<<a<<"+"<<b<<"*"<<c<<"+"<<d<<std::endl; else if(a+b*c-d==24) std::cout<<a<<"+"<<b<<"*"<<c<<"-"<<d<<std::endl; else if(a+b*c*d==24) std::cout<<a<<"+"<<b<<"*"<<c<<"*"<<d<<std::endl; else if(a-b+c+d==24) std::cout<<a<<"-"<<b<<"+"<<c<<"+"<<d<<std::endl; else if(a-b+c-d==24) std::cout<<a<<"-"<<b<<"+"<<c<<"-"<<d<<std::endl; else if(a-b+c*d==24) std::cout<<a<<"-"<<b<<"+"<<c<<"*"<<d<<std::endl; else if(a-b-c+d==24) std::cout<<a<<"-"<<b<<"-"<<c<<"+"<<d<<std::endl; else if(a-b-c-d==24) std::cout<<a<<"-"<<b<<"-"<<c<<"-"<<d<<std::endl; else if(a-b-c*d==24) std::cout<<a<<"-"<<b<<"-"<<c<<"*"<<d<<std::endl; else if(a-b*c+d==24) std::cout<<a<<"-"<<b<<"*"<<c<<"+"<<d<<std::endl; else if(a-b*c-d==24) std::cout<<a<<"-"<<b<<"*"<<c<<"-"<<d<<std::endl; else if(a-b*c*d==24) std::cout<<a<<"-"<<b<<"*"<<c<<"*"<<d<<std::endl; else if(a*b+c+d==24) std::cout<<a<<"*"<<b<<"+"<<c<<"+"<<d<<std::endl; else if(a*b+c-d==24) std::cout<<a<<"*"<<b<<"+"<<c<<"-"<<d<<std::endl; else if(a*b+c*d==24) std::cout<<a<<"*"<<b<<"+"<<c<<"*"<<d<<std::endl; else if(a*b-c+d==24) std::cout<<a<<"*"<<b<<"-"<<c<<"+"<<d<<std::endl; else if(a*b-c-d==24) std::cout<<a<<"*"<<b<<"-"<<c<<"-"<<d<<std::endl; else if(a*b-c*d==24) std::cout<<a<<"*"<<b<<"-"<<c<<"*"<<d<<std::endl; else if(a*b*c+d==24) std::cout<<a<<"*"<<b<<"*"<<c<<"+"<<d<<std::endl; else if(a*b*c-d==24) std::cout<<a<<"*"<<b<<"*"<<c<<"-"<<d<<std::endl; else if(a*b*c*d==24) std::cout<<a<<"*"<<b<<"*"<<c<<"*"<<d<<std::endl; else std::cout<<-1<<std::endl;最终的代码:
#include <iostream> int main(){ int T; std::cin>>T; for(int i=0;i<T;i++){ int a,b,c,d; std::cin>>a>>b>>c>>d; if(a+b+c+d==24) std::cout<<a<<"+"<<b<<"+"<<c<<"+"<<d<<std::endl; else if(a+b+c-d==24) std::cout<<a<<"+"<<b<<"+"<<c<<"-"<<d<<std::endl; else if(a+b+c*d==24) std::cout<<a<<"+"<<b<<"+"<<c<<"*"<<d<<std::endl; else if(a+b-c+d==24) std::cout<<a<<"+"<<b<<"-"<<c<<"+"<<d<<std::endl; else if(a+b-c-d==24) std::cout<<a<<"+"<<b<<"-"<<c<<"-"<<d<<std::endl; else if(a+b-c*d==24) std::cout<<a<<"+"<<b<<"-"<<c<<"*"<<d<<std::endl; else if(a+b*c+d==24) std::cout<<a<<"+"<<b<<"*"<<c<<"+"<<d<<std::endl; else if(a+b*c-d==24) std::cout<<a<<"+"<<b<<"*"<<c<<"-"<<d<<std::endl; else if(a+b*c*d==24) std::cout<<a<<"+"<<b<<"*"<<c<<"*"<<d<<std::endl; else if(a-b+c+d==24) std::cout<<a<<"-"<<b<<"+"<<c<<"+"<<d<<std::endl; else if(a-b+c-d==24) std::cout<<a<<"-"<<b<<"+"<<c<<"-"<<d<<std::endl; else if(a-b+c*d==24) std::cout<<a<<"-"<<b<<"+"<<c<<"*"<<d<<std::endl; else if(a-b-c+d==24) std::cout<<a<<"-"<<b<<"-"<<c<<"+"<<d<<std::endl; else if(a-b-c-d==24) std::cout<<a<<"-"<<b<<"-"<<c<<"-"<<d<<std::endl; else if(a-b-c*d==24) std::cout<<a<<"-"<<b<<"-"<<c<<"*"<<d<<std::endl; else if(a-b*c+d==24) std::cout<<a<<"-"<<b<<"*"<<c<<"+"<<d<<std::endl; else if(a-b*c-d==24) std::cout<<a<<"-"<<b<<"*"<<c<<"-"<<d<<std::endl; else if(a-b*c*d==24) std::cout<<a<<"-"<<b<<"*"<<c<<"*"<<d<<std::endl; else if(a*b+c+d==24) std::cout<<a<<"*"<<b<<"+"<<c<<"+"<<d<<std::endl; else if(a*b+c-d==24) std::cout<<a<<"*"<<b<<"+"<<c<<"-"<<d<<std::endl; else if(a*b+c*d==24) std::cout<<a<<"*"<<b<<"+"<<c<<"*"<<d<<std::endl; else if(a*b-c+d==24) std::cout<<a<<"*"<<b<<"-"<<c<<"+"<<d<<std::endl; else if(a*b-c-d==24) std::cout<<a<<"*"<<b<<"-"<<c<<"-"<<d<<std::endl; else if(a*b-c*d==24) std::cout<<a<<"*"<<b<<"-"<<c<<"*"<<d<<std::endl; else if(a*b*c+d==24) std::cout<<a<<"*"<<b<<"*"<<c<<"+"<<d<<std::endl; else if(a*b*c-d==24) std::cout<<a<<"*"<<b<<"*"<<c<<"-"<<d<<std::endl; else if(a*b*c*d==24) std::cout<<a<<"*"<<b<<"*"<<c<<"*"<<d<<std::endl; else std::cout<<-1<<std::endl; } return 0; }
信息
- ID
- 2726
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 21
- 已通过
- 6
- 上传者