贪心算法PAT乙级的两道题做了,第二道题是排序,贪心,查找的结合。
1.PAT-B 1023. 组个最小数 (20)
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
int a[10];
int sum=0;
for(int i=0;i<10;i++)
{cin>>a[i];
sum+=a[i];
}
string number;
number.append(sum,'0');
for(int i=1;i<10;i++)
{ if(a[i]!=0)
{number[0]=i+'0';
a[i]-=1;
break;}
}
int i=0,j=1;
for(i=0;i<10;i++) //循环的时候检查一遍数组是否越界
{ while(a[i]!=0&&j<=sum)
{number[j++]=i+'0';
a[i]-=1;
}
}
cout<<number;
system("pause");
return 0;
}
1.在循环中用string之前,先string.append(n,'0'),防止过程中越界。
2.数组参与循环,看最大值的时候是否越界。
3.巧用j+