HDU - 3183 A Magic Lamp
这是我们校赛的网络预选赛的题目,当时以为去掉最大数然后判断前导0就可以了,头脑迷糊没有注意到WA的样例
可以换个角度想,就是选择一堆数字,高位越小越好,那么这题是一个很简单的贪心。
#include<iostream> #include<vector> #include<cstring> #include<cstdio> #include<queue> #include<algorithm> #include<stack> #include<map> #include<set> #include<cmath> using namespace std; typedef long long ll; int main() { string s; while(cin>>s) { int m; int n=s.length(); scanf("%d",&m); int tem[1000+10]; int bj[1000+10]; memset(bj,0,sizeof(bj)); int ans=0; int syg=-1; for(int i=m+1; i<=n; i++) { int dis=0; char c='9'+1; for(int j=0; j<i; j++) { if(s[j]<c&&!bj[j]&&j>syg) { dis=j; c=s[j]; } } syg=dis; bj[dis]++; tem[ans++]=c-'0'; } bool flag=false; for(int i=0;i<ans;i++) { if(tem[i]||flag) { flag=true; cout<<tem[i]; } } if(!flag)cout<<'0'; cout<<endl; } return 0; }
对于一些题目,可以不那么直接,而是思考它的间接实现思路,比赛的时候不要紧张~
加油!