Member 13322678 Ответов: 8

Цель состоит в том, чтобы сформировать максимально возможное время в формате HH:MM:SS, используя любые шесть из девяти заданных одиночных цифр


Учитывая набор из девяти одиночных (не обязательно различных) цифр, скажем 0, 0, 1, 3, 4, 6, 7, 8, 9, можно сформировать много различных времен в 12-часовом формате времени чч:мм:СС, например 10:36:40 или 01:39:46, используя каждую из цифр только один раз. Цель состоит в том, чтобы найти максимально возможное допустимое время (с 00:00:01 до 12:00:00), которое может быть сформировано с использованием примерно шести из девяти цифр ровно один раз. В данном случае это 10:49:38.

Что я уже пробовал:

Строка, состоящая из последовательности из 9 (не обязательно различных) одиночных цифр (любой из 0-9), разделенных запятыми. Последовательность будет неубывающей

RickZeeland

Совет: напишите функцию, например, между(min, max), чтобы проверить каждую часть времени (часы, минуты, секунды) отдельно.

8 Ответов

Рейтинг:
2

OriginalGriff

Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!


Рейтинг:
2

Member 13327065

#include<stdio.h>
main()
{
	int a[100],i,temp[100],HMS[6],x,z;
	//printf("enter:");
	for(i=0;i<9;i++)		
	{
	scanf("%1d,",&a[i]);
	temp[i]=0;
	}
	for(i=0;i<=9;i++)	
	{
		if(a[i]==0)
			temp[0]++;
		else if(a[i]==1)
			temp[1]++;
		else if(a[i]==2)
			temp[2]++;
		else if(a[i]==3)
			temp[3]++;
		else if(a[i]==4)
			temp[4]++;
		else if(a[i]==5)
			temp[5]++;
		else if(a[i]==6)
			temp[6]++;
		else if(a[i]==7)
			temp[7]++;
		else if(a[i]==8)
			temp[8]++;
		else if(a[i]==9)
			temp[9]++;
	}
	if(temp[0]>0||temp[1]>0)	
	{
		if(temp[1]==0)			
		{
			HMS[0]=0;		
			temp[0]--;		
			for(x=9;x>0;x--)
			{						
				if(temp[x]!=0)
				{
					HMS[1]=x;
					temp[x]--;
					break;
				}
			}
				
		}
		else
		{
			HMS[0]=1;
			temp[1]--;
			for(x=2;x>0;x--)
			{
				if(temp[x]!=0)
				{
					HMS[1]=x;
					temp[x]--;
					break;
				}
			}
		}
		if(HMS[0]==1&&HMS[1]!=2)
		{
			for(x=5;x>0;x--)
				{
					if(temp[x]!=0)
					{
						HMS[2]=x;
						temp[x]--;
						break;
					}
				}
			for(x=9;x>0;x--)
				{
					if(temp[x]!=0)
					{
						HMS[3]=x;
						temp[x]--;
						break;
					}
				}
			for(x=5;x>0;x--)
				{
					if(temp[x]!=0)
					{
						HMS[4]=x;
						temp[x]--;
						break;
					}
				}
			for(x=9;x>0;x--)
				{
					if(temp[x]!=0)
					{
						HMS[5]=x;
						temp[x]--;
						break;
					}
				}
		}
		else	
		{
			if(temp[0]==4)
			HMS[2]=HMS[3]=HMS[4]=HMS[5]=0;
			else
			goto z;
		}
		printf("%d%d:%d%d:%d%d",HMS[0],HMS[1],HMS[2],HMS[3],HMS[4],HMS[5]);
	}
	else 
	z:	printf("\nimpossible\n");
	
}


jeron1

Если вы верите, что помогаете, вы ошибаетесь.

Рейтинг:
1

Patrice T

Команда с вашим одноклассником Напишите программу на языке Си, чтобы сформировать максимально возможное время в формате HH:MM:SS, используя любые шесть из девяти заданных однозначных цифр (не обязательно различимых)[^]

Возьмите лист бумаги и карандаш. Используйте свой мозг и решите проблему вручную. Поскольку Гарри Поттер не дал вам решение, нет никакой магии, и решение не прыгнуло вам в лицо.
Вы решили проблему, следуя процедуре, которая является вашим алгоритмом. Вам нужно записать шаги механическим способом (как компьютер). Программа будет следовать этим шагам.

Мы не делаем вашу домашнюю работу.
Домашнее задание не предназначено для проверки ваших навыков просить других людей сделать вашу работу, оно предназначено для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание курсов, которые вы прошли, а также проблем, которые вы испытываете при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по исправлению положения.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так что попробуйте, перечитайте свои уроки и приступайте к работе. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.

Как программист, ваша задача-создавать алгоритмы это решает конкретные проблемы, и вы не можете полагаться на кого-то другого, чтобы вечно делать это за вас, поэтому есть время, когда вам придется научиться этому. И чем скорее, тем лучше.
Когда вы просто просите решение, это похоже на попытку научиться водить машину, обучая кого-то другого.
Создание алгоритма - это в основном поиск математики и необходимая адаптация к вашей реальной проблеме.

Идея "развития" заключается в следующем: "систематическое использование научно - технических знаний для достижения конкретных целей или требований." BusinessDictionary.com[^]
Это не то же самое, что "быстро гуглите и сдавайтесь, если я не могу найти точно правильный код".


Рейтинг:
1

Reishabh_Saxena

Просто вызовите метод run класса timemachine

using System;
using System.Linq;


    public class amaz
    {
        public string run(int a, int b, int c, int d, int e, int f)
        {
            if (a > 9 || b > 9 || c > 9 || d > 9 || e > 9 || f > 9)
            {
                return "Impossible";
            }
            int[] input = { a,b,c,d,e,f};
            return GetTime(input);
        }
        private string GetTime(int[] input)
        {
            int numIndex = -1;
            if (!validateHour(input))
                return "Impossible";
            //set H1
            int h1 = 0;
            int h2 = 0;
            if (input.Contains(1) && input.Contains(2)) {
                h1 = 1;
                numIndex = Array.IndexOf(input, h1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();

                h2 = 2;
                numIndex = Array.IndexOf(input, h2);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(0))
            {
                h1 = 0;
                numIndex = Array.IndexOf(input, h1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();

                h2 = input.First();
                numIndex = Array.IndexOf(input, h2);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(1))
            {
                h1 = 1;
                numIndex = Array.IndexOf(input, h1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();

                h2 = input.First();
                numIndex = Array.IndexOf(input, h2);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(2))
            {
                h1 = 2;
                numIndex = Array.IndexOf(input, h1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
                if (input.Contains(0))
                {
                    h2 = 0;
                    numIndex = Array.IndexOf(input, h2);
                    input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
                }
                else if (input.Contains(1))
                {
                    h2 = 1;
                    numIndex = Array.IndexOf(input, h2);
                    input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
                }
                else if (input.Contains(2))
                {
                    h2 = 2;
                    numIndex = Array.IndexOf(input, h2);
                    input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
                }
                else if (input.Contains(3))
                {
                    h2 = 3;
                    numIndex = Array.IndexOf(input, h2);
                    input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
                }

            }

            //set M1
            if (!validateMinAndSec(input))
                return "Impossible";
            int m1 = 0;
            if (input.Contains(0))
            {
                m1 = 0;
                numIndex = Array.IndexOf(input, m1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(1))
            {
                m1 = 1;
                numIndex = Array.IndexOf(input, m1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(2))
            {
                m1 = 2;
                numIndex = Array.IndexOf(input, m1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(3))
            {
                m1 = 3;
                numIndex = Array.IndexOf(input, m1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(4))
            {
                m1 = 4;
                numIndex = Array.IndexOf(input, m1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(5))
            {
                m1 = 5;
                numIndex = Array.IndexOf(input, m1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }


            int m2 = 0;
            m2 = input.First();
            numIndex = Array.IndexOf(input, m2);
            input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();

            int s1 = 0;
            if (!validateMinAndSec(input))
                return "Impossible";
            if (input.Contains(0))
            {
                s1 = 0;
                numIndex = Array.IndexOf(input, s1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(1))
            {
                s1 = 1;
                numIndex = Array.IndexOf(input, s1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(2))
            {
                s1 = 2;
                numIndex = Array.IndexOf(input, s1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(3))
            {
                s1 = 3;
                numIndex = Array.IndexOf(input, s1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(4))
            {
                s1 = 4;
                numIndex = Array.IndexOf(input, s1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }
            else if (input.Contains(5))
            {
                s1 = 5;
                numIndex = Array.IndexOf(input, s1);
                input = input.Where((val, idx) => idx != numIndex).OrderBy(x => x).ToArray();
            }

            int s2 = 0;
            s2 = input.First();

            return h1.ToString() + h2.ToString() + ":" + m1.ToString() + m2.ToString() + ":" + s1.ToString() + s2.ToString();
        }
        private bool validateHour(int[] input)
        {
            if (input.Contains(1) || input.Contains(0)|| input.Contains(2))
                return true;
            return false;
        }
        private bool validateMinAndSec(int[] input)
        {
            if (input.Contains(0) || input.Contains(1) || input.Contains(2) || input.Contains(3) || input.Contains(4) || input.Contains(5))
                return true;
            return false;
        }
      
    }


Patrice T

Это было домашнее задание на 1 год, не уверен, что кто-то все еще ждет ответа.
Попробуйте вместо этого ответить на реальные вопросы.
При первом чтении я не уверен, что ваш код будет успешным с 0, 1, 2, 7, 8, 9

Рейтинг:
1

Member 13913376

#включить<stdio.h>
тап_п()
{
int a[20],i,h1,h2,m1,m2,s1,s2;
для(i=0;i<10;i++)
scanf("%d\n",&a[i]);
для(i=0;i<10;i++)
а(а[я]&ГТ;=1&амп;&амп;с[я] и л;=9){
m2=a[i];
перерыв;
}
для(i=0;i<9;i++)
а(а[я]&ГТ;=1&амп;&амп;с[я] и л;=9){
s2=a[i];
перерыв;
}
для(i=0;i<8;i++)
а(а[я]&ГТ;=1&амп;&амп;с[Я] И Л;=5){
m1=a[i];
перерыв;
}
для(i=0;i<7;i++)
в то время как(a[i]>=m1){
a[i]=a[i+1];
перерыв;
}
для(i=0;i<6;i++)
а(а[я]&ГТ;=1&амп;&амп;с[Я] И Л;=5){
s1=a[i];
перерыв;
}
для(i=0;i<5;i++)
в то время как(a[i]>=s1){
a[i]=a[i+1];
перерыв;
}

для(i=0;i<4;i++)
а(а[я] и gt;=0&&усилителя;а[я] И Л;=2){
h2=a[i];
перерыв;
}
для(i=0;i<3;i++)
while(a[i]==h2){
a[i]=a[i+1];
перерыв;
}
для(i=0;i<2;i++)
while(a[i]==0||a[i]==1){
h1=a[i];
перерыв;
}
если(h1>=2||a[0]>=a[5]||a[1]>=a[6]||a[2]>=a[7]||a[3]>=a[8]||a[4]>=a[9])
printf("невозможно");
еще
функции printf("%д%д:%д%д:%д%д",Н1,Н2,М1,М2,С1,С2);
возвращает 0;
}


CHill60

Я искренне надеюсь, что ОП все еще не ждет, когда кто-то сделает за них домашнее задание после целого года.
Вы никому не помогаете, публикуя домашние задания.
Придерживайтесь ответов на новые сообщения, где ОП все еще нуждается в помощи

Patrice T

Этот код даже не является допустимым ответом.

Рейтинг:
1

vijaykpawar

<pre>private String solution(int i, int j, int k, int l, int m, int n) {
		List<Integer> list = new ArrayList<Integer>();
		list.add(i);
		list.add(j);
		list.add(k);
		list.add(l);
		list.add(m);
		list.add(n);
		Collections.sort(list);

		// first two needs to form HH

		// hence HH = list [0] and list[1]

		if (list.get(3) > 5) { // place where 1 needs to be swaped with 3rd
			int temp = list.get(1);
			list.set(1, list.get(3));
			list.set(3, temp);
		}
		System.out.println(list);
		String HH = "" + list.get(0) + list.get(1);

		if (Integer.parseInt(HH) > 23) {
			return "NOT POSSIBLE";
		}
		// now check phisiblility of SS after MM
		if ((list.get(2) * 10 + list.get(3)) < 60 && (list.get(4) * 10 + list.get(5)) < 60) {

		} else if ((list.get(2) * 10 + list.get(3)) < 60 && (list.get(4) * 10 + list.get(5)) > 59) {
			// swap //3 and 4
			System.out.println(list);
			int temp = list.get(3);
			list.set(3, list.get(4));
			list.set(4, temp);
			System.out.println(list);
		} else {
			return "NOT POSSIBLE";
		}
		return HH + ":" + list.get(2) + list.get(3) + ":" + list.get(4) + list.get(5);

	}


Patrice T

Вопрос в 9 цифрах и языке Си !

Рейтинг:
0

Member 13322782

Это из экзамена, проведенного компанией Tata consultancy services. Кодевита и этот вопрос-первый вопрос там, если я не ошибаюсь. Написал экзамен, и я решил эту задачу, взяв цифры по-другому. H1 H2 : M1 M2 : S1 S2. это подсказка для вас. Кроме того, вам нужно подтолкнуть свой мозг прямо сейчас!


Рейтинг:
0

Member 13683047

Для минимального времени хитрость заключается в том, чтобы найти все перестановки данной строки из 6 символов в лексикографическом порядке и выполнить проверку их, начиная с лексикографически кратчайшего(обратного в случае максимального времени). Вот рабочий код.

Код ссылка.