拼多多春招求解
拼多多春招第一题,加法转乘法:(求问,这到底哪里有问题?本地测试通过,提交case通过率为0???)
输入:一行string,均为加法与整数
输出:第一行,转换后的乘法式;第二行,算数结果
代码:#include<iostream>
#include<string>
using namespace std;
int exist(int a[], int size, int num){
for (int i = 0; i < size; i++){
if (a[i] == num)
return i;
}
return -1;
}
void sort(int* a, int* c, int size){
for (int i = 1; i < size; i++){
int tempa = 0;
int tempc = 0;
if (a[i] < a[i - 1]){
tempa = a[i];
tempc = c[i];
for (int j = i - 1; j >= 0; j--){
if (tempa < a[j]){
a[j + 1] = a[j];
c[j + 1] = c[j];
if (j == 0){
a[0] = tempa;
c[0] = tempc;
}
}
else{
a[j + 1] = tempa;
c[j + 1] = tempc;
}
}
}
}
}
int main(){
string str = "";
int a[5000];
int c[5000];
cin >> str;
int cnt = 0, num = 0, top = 0;
while (cnt < str.size()){
if (str[cnt] != '+'){
num = num * 10 + str[cnt]-'0';
}
else{
int index = exist(a, top, num);
if (index != -1){
c[index] ++;
num = 0;
}
else{
a[top] = num;
c[top] = 1;
top++;
num = 0;
}
}
cnt++;
}
int index = exist(a, top, num);
if (index != -1){
c[index] ++;
}
else{
a[top] = num;
c[top] = 1;
top++;
}
sort(a, c, top);
int res = 0;
for (int i = 0; i < top-1; i++){
cout << a[i] <<'*'<<c[i]<< '+';
res += a[i] * c[i];
}
cout << a[top - 1]<< '*'<<c[top - 1] << endl;
res += a[top - 1] * c[top - 1];
cout << res;
return 0;
}
#笔试题目##春招#代码:#include<iostream>
#include<string>
using namespace std;
int exist(int a[], int size, int num){
for (int i = 0; i < size; i++){
if (a[i] == num)
return i;
}
return -1;
}
void sort(int* a, int* c, int size){
for (int i = 1; i < size; i++){
int tempa = 0;
int tempc = 0;
if (a[i] < a[i - 1]){
tempa = a[i];
tempc = c[i];
for (int j = i - 1; j >= 0; j--){
if (tempa < a[j]){
a[j + 1] = a[j];
c[j + 1] = c[j];
if (j == 0){
a[0] = tempa;
c[0] = tempc;
}
}
else{
a[j + 1] = tempa;
c[j + 1] = tempc;
}
}
}
}
}
int main(){
string str = "";
int a[5000];
int c[5000];
cin >> str;
int cnt = 0, num = 0, top = 0;
while (cnt < str.size()){
if (str[cnt] != '+'){
num = num * 10 + str[cnt]-'0';
}
else{
int index = exist(a, top, num);
if (index != -1){
c[index] ++;
num = 0;
}
else{
a[top] = num;
c[top] = 1;
top++;
num = 0;
}
}
cnt++;
}
int index = exist(a, top, num);
if (index != -1){
c[index] ++;
}
else{
a[top] = num;
c[top] = 1;
top++;
}
sort(a, c, top);
int res = 0;
for (int i = 0; i < top-1; i++){
cout << a[i] <<'*'<<c[i]<< '+';
res += a[i] * c[i];
}
cout << a[top - 1]<< '*'<<c[top - 1] << endl;
res += a[top - 1] * c[top - 1];
cout << res;
return 0;
}