poj 3617贪心

来源:互联网 发布:编程显示九九乘法表 编辑:程序博客网 时间:2024/05/24 07:09

点击打开链接

<pre name="code" class="cpp">#include <iostream>#define M 2100using namespace std;int main(){char str[M][1],s[M];int n,i,f,l,k,a,b;cin>>n;for(i=1;i<=n;i++){cin>>str[i];}k=0;f=1;l=n;while(k<n){a=f; b=l;while(str[a][0]==str[b][0]&&a<=b)//若相等 为了保证 前面的部分要较小 应该尽早的使用较小的字符 {a++;b--;}++k;if(str[a][0]<str[b][0]) //选的加在s的尾部时->选的数从前往后排 //要求字典序最小 -> 前面的部分要较小 -> 贪心:把大的留在后面选  每次都选当前最小的    {s[k]=str[f][0];f++;}else{s[k]=str[l][0];l--;}}for(i=1;i<=n;i++){cout<<s[i];if(i%80==0&&i!=n) //格式 满80个字符换行 cout<<endl;}return 0;}  

  


0 0