1418. 点菜展示表
static int cmp(string a, string b)
{
return atoi(a.c_str()) < atoi(b.c_str());
}
vector<vector<string>> displayTable(vector<vector<string>>& orders)
{
vector<string> s1, s2;
vector<vector<string>> list;
s2.push_back("Table");
for (int i = 0; i < orders.size(); i++)
{
if (!count(s1.begin(), s1.end(), orders[i][1]))
s1.push_back(orders[i][1]);
if (!count(s2.begin(), s2.end(), orders[i][2]))
s2.push_back(orders[i][2]);
}
sort(s1.begin(), s1.end(), cmp);
sort(s2.begin() + 1, s2.end());
list.push_back(s2);
int a[501][501];
memset(a, 0, sizeof(a));
for (int i = 0; i < orders.size(); i++)
{
vector<string>::iterator it;
it = find(s2.begin() + 1, s2.end(), orders[i][2]);
int r = atoi(orders[i][1].c_str());
int c = it - s2.begin() - 1;
a[r][c]++;
}
for (int i = 0; i < s1.size(); i++)
{
vector<string> temp;
temp.push_back(s1[i]);
for (int j = 0; j < s2.size() - 1; j++)
{
temp.push_back(to_string(a[atoi(s1[i].c_str())][j]));
}
list.push_back(temp);
}
return list;
}
int minNumberOfFrogs(string croakOfFrogs) {
int c,r,o,a,k;
c = r = o = a = k = 0;
int sum = 0;
for(int i = 0;i<croakOfFrogs.size();i++)
{
if(croakOfFrogs[i] == 'c')
{
//k>0?k--,c++:sum++,c++;
if(k>0)
k--;
else
sum++;
c++;
}
if(croakOfFrogs[i] =='r')
{
c--;r++;
}
if(croakOfFrogs[i] == 'o')
{
r--;o++;
}
if(croakOfFrogs[i] == 'a')
{
o--;a++;
}
if(croakOfFrogs[i] == 'k')
{
a--;k++;
}
//cout<<c<<r<<o<<a<<k<<endl;
if(c<0 || r<0 ||o<0 ||a<0 ||k<0)
return -1;
}
if(c!=0 || r!=0 ||o!=0 ||a!=0)
return -1;
return sum;
}
int numOfArrays(int n, int m, int k) {
long long dp[55][105][55];
long long mod = 1000000007;
memset(dp,0,sizeof(dp));
for(int i = 0;i <= m;i++)
dp[1][i][1] = 1;
for(int i = 2;i<=n;i++)
{
for(int j = 1;j<=m;j++)
{
for(int l = 1;l<=k;l++)
{
for(int p = 1;p<j;p++)
dp[i][j][l] += dp[i-1][p][l-1];//只有最后一个数为最大
dp[i][j][l]+=1LL*j*dp[i-1][j][l];//前i-1个数有最大值,包含最后一个数有最大值的情况
dp[i][j][l]%=mod;
//cout<<i<<" "<<j<<" "<<" "<<l<<": "<<dp[i][j][l]<<endl;
}
}
}
long long ans = 0;
for(int j = 1;j<=m;j++)
ans=(ans+dp[n][j][k])%mod;
return ans;
}