Помогите! соdеwаrs c++
задача:
Take a number: 56789. Rotate left, you get 67895.
Keep the first digit in place and rotate left the other digits: 68957.
Keep the first two digits in place and rotate the other ones: 68579.
Keep the first three digits and rotate left the rest: 68597. Now it is over since keeping the first four it remains only one digit which rotated is itself.
You have the following sequence of numbers:
56789 -> 67895 -> 68957 -> 68579 -> 68597
and you must return the greatest: 68957.
Task Write function max_rot(n) which given a positive integer n returns the maximum number you got doing rotations similar to the above example.
и мой код:
#include <string>
#include <vector>
#include <sstream>
using namespace std;
class MaxRotate
{
public:
static long long maxRot(long long n) {
vector<char> n_char = new vector<char>;
vector<long long> total_arr;
string ntos = to_string(n);
istringstream StoC(ntos);
while (StoC) {
n_char.push_back(StoC);
}
// first operation
n_char.front() = n_char.end();
total_arr.push_back(stoi(to_string(n_char)));
// second operation
n_char[1] = n_char.end();
total_arr.push_back(stoi(to_string(n_char)));
// third operation
n_char[2] = n_char.end();
total_arr.push_back(stoi(to_string(n_char)));
// fourth operation
n_char[3] = n_char.end();
total_arr.push_back(stoi(to_string(n_char)));
//returning the greatest
long long g;
for (int i = 0; i < (int)total_arr.size(); i++) {
if (i == 0) {
g = total_arr[0];
}
else {
if (g < total_arr[i]) {
g = total_arr[i];
}
}
}
return g;
}
};
Я очень долго пытаюсь написать этот код, но с каждым разом только больше и больше ошибок.
Ответы (1 шт):
Думаю, что самый простой (не самый эффективный, но самый простой) способ такой:
int max_rot(int m)
{
string n = to_string(m);
for(auto it = n.begin(); it != n.end(); ++it)
{
rotate(it,it+1,n.end());
int res = stoi(n);
if (res > m) m = res;
}
return m;
}
Но все же давайте вы будете работать над этими задачами самостоятельно.
Пожалуй, вам стоит для начала ("Я начал учить срр только несколько дней назад") решать какие-то задачи попроще.