Естественные науки

задачи по дискретной математике, помогите решить на Java!!!!

16.Написать программу, содержащую функцию, которая определяет, входит ли список М1 в список М2. Предполагается, что списки существуют. 17.Написать программу, содержащую подпрограмму, которая копирует в конец непустого списка М его первый элемент. Если элементы не найдены, то выдать на экран соответствующие сообщение. 18.Одинокий король долго ходил по бесконечной шахматной доске. Известна последовательность из N его ходов (вверх, вниз, влево, вправо, вверх-влево и т.п.). Написать программу, определяющую побывал ли король дважды на одном и том же поле за минимально возможное при заданном N число вычислений. 19.По кругу расположено N монет гербами вверх и M монет гербами вниз. Обходя круг по ходу часовой стрелки, переворачивает каждую S-тую9монету. В первый раз счет начинается с герба. В каком порядке надо расставить монеты, чтобы после K ходов стало L монет, лежащих гербами вверх. 20.Вокруг считающего стоят N человек, из которых выделен первый, а остальные занумерованы по часовой стрелке числами от 2 до N. Считающий, начиная с кого-то, ведет счет до M. Человек, на котором остановился счет, выходит из круга. Счет продолжается со следующего человека и так до тех пор, пока не останется один человек. Определить: a)номер оставшегося человека, если известно M и то, что счет начинался с первого человека; b) номер человека c которого начинался счет, если известно M и номер оставшегося человека L.
Держите первые три. Дальше сами. Спать пора :)

import java.util.*;
public class lessons1621 {
public static void main(String []cmd)
{
lesson16 l16 = new lesson16();
l16.Run();
lesson17 l17 = new lesson17();
l17.Run();
lesson18 l18 = new lesson18();
l18.Run();
}
}

public class lesson16 {
List<string> ls1 = new ArrayList<string>();
List<string> ls2 = new ArrayList<string>();
public lesson16()
{
//
ls1.add("qwe");
ls1.add("rty");
ls1.add("asd");
ls1.add("fgh");
//
ls2.add("123");
ls2.add("qwe");
ls2.add("rty");
ls2.add("asd");
ls2.add("fgh");
ls2.add("456");
}
public Boolean FindListInList(List<string> l1, List<string> l2)
{
int count=0;
for(int i=0,j=0; i < ls1.size(); ++i)
{
String s1=ls1.get(i);
Boolean found=false;
for(; j < ls2.size() && !found; ++j)
{
String s2 = ls2.get(j);
if(!s1.equals(s2)) { count=0; continue; }
count++;
found=true;
}
if(!found) return false;
if(count == ls1.size()) return true;
}
return false;
}
public void Run()
{
if(FindListInList(ls1, ls2))
{
System.out.println("Lesson16: first List is contained in the second list");
}
else
{
System.out.println("Lesson16: first List is not contained in the second list");
}
}
}
public class lesson17 {
List<string> ls1 = new ArrayList<string>();
public lesson17()
{
//
ls1.add("qwe");
ls1.add("rty");
ls1.add("asd");
ls1.add("fgh");
}
public Boolean CopyFirstToLast(List<string> l)
{
if(l.size() > 0)
{
String s=l.get(0);
l.add(s);
return true;
}
return false;
}
public void Run()
{
if(CopyFirstToLast(ls1))
{
System.out.println("Lesson17: Done");
}
else
{
System.out.println("Lesson17: List is empty");
}
}
}

public class lesson18 {
public class Position
{
public int x;
public int y;
public Position() { x=0; y=0; }
public Position(Position cp) { x=cp.x; y=cp.y; }
public boolean equals(Object o)
{
Position pos = (Position)o;
return pos.x == x && pos.y == y;
}
};
enum MoveCode
{
Up,
Down,
Left,
Right
};
List<movecode> lsMoves = new ArrayList<movecode>();
List<position> visited = new ArrayList<position>();
Position cur = new Position();
public Boolean LonelyKingMoveLoops(List<movecode> moves)
{
visited.add(new Position(cur));
for(int i=0; i < moves.size(); ++i)
{
switch(moves.get(i))
{
case Up:
++cur.y;
break;
case Down:
--cur.y;
break;
case Left:
--cur.x;
break;
case Right:
++cur.x;
break;
}
if(visited.contains(cur)) return true;
visited.add(new Position(cur));
}
return false;
}
public void BuildMoves()
{
lsMoves.add(MoveCode.Up);
lsMoves.add(MoveCode.Left);
lsMoves.add(MoveCode.Down);
lsMoves.add(MoveCode.Right);
}
public void Run()
{
BuildMoves();
if(LonelyKingMoveLoops(lsMoves))
{
System.out.println("Lesson18: Loop found");
}
else
{
System.out.println("Lesson18: No Loops");
}
}
}
Елена Куимова
Елена Куимова
3 341
Лучший ответ
ну и аппетит у вас...