| Экзамен-2004 |
|
|
Tuesday, 20 June 2006 | Зэев Фрайман, д-р Евгений Канель для раздела Ученье – свет Мы публикуем еще одну подборку задач – на этот раз они взяты из государственного экзамена 2004 года (уровень «две учебных единицы из пяти»). И в этот раз мы не стали использовать все задачи экзамена, а только те, которые в той ли иной степени требуют написания программного кода, метода или полного класса. Естественно, что задачи были «заточены» под PASCAL и С, но мы немного изменили формулировки, адаптировав их под Java. Это – вторая часть подборки.Задача №9
Дан двумерный массив размером 12х12, содержащий целые числа из диапазона от 1 до 30 (включительно). В массиве имеется "квадрат К", если имеется подмассив размером 2х2, содержащий значение К.
Например, в приведенном примере (массив размером 5х5) имеется "квадрат 9":
Напиши метод, который принимает в качестве параметров массив размером 12х12 и число К – и возвращает значение 1, если имеется в массиве "квадрат К"; в противном случае – возвращает значение 0.
Напиши программу, которая находит в массиве размером 12х12 наибольшее число К из тех, для которых в массиве существуют "квадраты" – и распечатывает его. В случае, если в массиве нет ни одного "квадрата", программа должна напечатать соответствующее текстовое сообщение.
class exer2004_10{
static boolean rectK (int[][] m, int i, int j){
if ((m[i][j]==m[i+1][j])&&(m[i][j]==m[i][j+1])&&(m[i][j]==m[i+1][j+1])) return true;
else return false;
}
public static void main (String args[]) {
int i,j,max=-1;
boolean flag;
int m[][]=new int[12][12];
for (i=0;i<12;i++)
for (j=0;j<12;j++)
m[i][j]=(int)(3*Math.random()+1);
for (i=0;i<12;i++){
for (j=0;j<12;j++) IO.write(m[i][j]+" ");
IO.writeln();
}
for (i=0;i<11;i++)
for (j=0;j<11;j++) {
flag=rectK(m,i,j);
if (flag==true) IO.writeln(m[i][j]+" "+i+" "+j);
if (m[i][j]>max) max=m[i][j];
}
IO.writeln("Max K="+max);
}
}
|
||||||||||||||||||||||||||