题目链接:
http://codeforces.com/contest/664/problem/B
题意:
给你一个等式,把等式左边的问号用1到n(n为等式右边的数)的数填好,使得等式成立
题解:
贪心求出最小最大值,如果n在这个范围则有解,否则无解。
构造解: 取最小值或最大值,然后从第一个数开始调整,直到等式成立为止。
代码:
#include<iostream> #include<cstring> #include<vector> using namespace std; const int maxn = 111; const int INF = 1e9 + 7; char str[maxn], sig[maxn]; int val[maxn],p1,p2; int n; void init() { p1 = 0, p2 = 0; sig[p1++] = '+'; } int main() { init(); while (scanf("%s", str) == 1 && str[0] != '=') { if (str[0] == '?') { }else{ sig[p1++] = str[0]; } } sig[p1] = '