Авторские Материалы о событиях в Израиле на Ближнем Востоке и в мире

IsraMir.com - Израильская журналистика

Default color brown color green color red color blue color
Вы сейчас тут: Новости arrow Техотдел arrow Свет ученья arrow «Странная» задача с массивом
Skip to content
«Странная» задача с массивом Версия для печати Отправить на e-mail
Sunday, 19 March 2006 | Д-р Евгений Канель, Зэев Фрайман для раздела Ученье – свет
Странныймассивisramir.comОбычно задачи на двумерные массивы сопровождаются использованием вложенных циклов – и этим они нас, учителей, очень устраивают в качестве тренировки учеников на использование именно такого механизма. Но иногда попадаются задачи, которые при внешней (да и логической тоже, впрочем...) простоте обнаруживают при решении «странности».
 
Вот, например, одна из такие странных в своей простоте задач: у меня, при  решении «в лоб», не получилось использовать меньше, чем 4(!) вложенных цикла... А д-р Канель предлагает вариант из «только» трех вложенных, воспользовавшись «перегонкой» двумерного массива в одномерный.
 
А что можно еще?
 
Напиши программу, принимающую в качестве параметра двумерный «квадратный» массив и определяющую количество пар ячеек, отвечающих следующим условиям:
  1. обе ячейки в паре содержат одинаковое значение
  2. ячейки не находятся в одной строке
  3. ячейки на находятся в одном столбце
 
 
Автор варианта: Зэев Фрайман
 
class ex899222_3 {
 
public static void fill(int[][] m, int a){
            for (int i=0;i
                        for (int j=0;j
                                   m[i][j]=(int)(10*Math.random());
                        }
            }
    }
   
    public static void view(int[][] m, int a){
            for (int i=0;i
                        for (int j=0;j
                                   IO.write(m[i][j]+" ");
                        }
                        IO.writeln();
            }
    }
 
public static int control (int [][] m, int a){
                        int count=0;
                        for (int i=0;i
                        for (int j=0;j
                                   for (int i1=0;i1
                                               for (int j1=0;j1
                                                           if ((m[i][j]==m[i1][j1])&&(i!=i1)&&(j!=j1)) {
                                                                       IO.writeln("["+i+","+j+"]=["+i1+","+j1+"]="+m[i][j]+" "+m[i1][j1]);
                                                                       count++;
                                                           }
                                   }
                                               }
                        }
            }
            count=count/2;
            return count;    
}
 
public static void main(String args[]) {
    int a=IO.readInt();
    int m[][]=new int[a][a];
    fill(m,a);
    view(m,a);
    IO.writeln(control(m,a));
    }
 
 
Автор варианта : д -р Евгений Канель
 
class ex899222_3 {
 
public static void fill(int[][] m, int a){
            for (int i=0;i
                        for (int j=0;j
                                   m[i][j]=(int)(10*Math.random());
                        }
            }
    }
   
    public static void view(int[][] m, int a){
            for (int i=0;i
                        for (int j=0;j
                                   IO.write(m[i][j]+" ");
                        }
                        IO.writeln();
            }
    }
 
public static int control1 (int [][] m, int a){
int []b=new int[a*a];
int count=0;
for(int i=0;i
  for(int j=0;j
 
  for(int k=0;k
     for(int k1=k+1;k1
         if(b[k]==b[k1]){int i=k/a;int i1=k1/a;int j=k%a;int j1=k1%a;
                                       if((i!=i1) &&(j!=j1)){
                                                            IO.writeln("["+i+","+j+"]=["+i1+","+j1+"]="+m[i][j]+" "+m[i1][j1]);
                                                                       count++;}
                                               };
    return count;
}
public static void main(String args[]) {
    int a=IO.readInt();
    int m[][]=new int[a][a];
    fill(m,a);
    view(m,a);
    IO.writeln(control1(m,a));
    }
 
 
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:


Автотранслитерация: выключена

Защитный код

Powered by jComments