ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1015. Найдите различия!

Help!!What's wrong with my program?
Послано cc 28 фев 2003 13:03
#include<stdio.h>

int n,total,note[100000][7];

void init()
{
  int i,j;
  scanf("%d",&n);
  for(i=0;i<n;i++)
    {
      note[i][0]=0;
      for(j=1;j<7;j++)
        scanf("%d",&note[i][j]);
    }
}

void right(int num)
{
  int temp;
  temp=note[num][4];
  note[num][4]=note[num][1];
  note[num][1]=note[num][6];
  note[num][6]=note[num][2];
  note[num][2]=temp;
}

void left(int num)
{
  int temp;
  temp=note[num][4];
  note[num][4]=note[num][2];
  note[num][2]=note[num][6];
  note[num][6]=note[num][1];
  note[num][1]=temp;
}

void up(int num)
{
  int temp;
  temp=note[num][4];
  note[num][4]=note[num][5];
  note[num][5]=note[num][6];
  note[num][6]=note[num][3];
  note[num][3]=temp;
}

void down(int num)
{
  int temp;
  temp=note[num][4];
  note[num][4]=note[num][3];
  note[num][3]=note[num][6];
  note[num][6]=note[num][5];
  note[num][5]=temp;
}

void change(int num)
{
  if(note[num][1]==1)right(num);
  if(note[num][2]==1)left(num);
  if(note[num][3]==1)down(num);
  if(note[num][5]==1)up(num);
  if(note[num][6]==1){right(num);right(num);}
}

int compare(int num)
{
  int i,j,k;
  for(i=0;i<num;i++)
    {
      k=1;
      for(j=1;j<7;j++)
        if(note[i][j]!=note[num][j])k=0;
      if(k){note[num][0]=note[i][0];return 0;}
    }
  total++;note[num][0]=total;
  return 0;
}

void work()
{
  int i;
  if(note[0][4]!=1)change(0);note[0][0]=1;total=1;
  for(i=1;i<n;i++)
    {
      if(note[i][4]!=1)change(i);
      compare(i);
    }
}

void out()
{
  int i,j;
  printf("%d\n",total);total++;
  for(i=1;i<total;i++)
    {
      for(j=0;j<n;j++)
        if(note[j][0]==i)printf("%d ",j+1);
      printf("\n");
    }
}

void main()
{
  init();
  work();
  out();
}
Re: Help!!What's wrong with my program?
Послано ortemij 24 ноя 2007 19:29
cc писал(a) 28 февраля 2003 13:03
#include<stdio.h>

int n,total,note[100000][7];

void init()
{
  int i,j;
  scanf("%d",&n);
  for(i=0;i<n;i++)
    {
      note[i][0]=0;
      for(j=1;j<7;j++)
        scanf("%d",&note[i][j]);
    }
}

void right(int num)
{
  int temp;
  temp=note[num][4];
  note[num][4]=note[num][1];
  note[num][1]=note[num][6];
  note[num][6]=note[num][2];
  note[num][2]=temp;
}

void left(int num)
{
  int temp;
  temp=note[num][4];
  note[num][4]=note[num][2];
  note[num][2]=note[num][6];
  note[num][6]=note[num][1];
  note[num][1]=temp;
}

void up(int num)
{
  int temp;
  temp=note[num][4];
  note[num][4]=note[num][5];
  note[num][5]=note[num][6];
  note[num][6]=note[num][3];
  note[num][3]=temp;
}

void down(int num)
{
  int temp;
  temp=note[num][4];
  note[num][4]=note[num][3];
  note[num][3]=note[num][6];
  note[num][6]=note[num][5];
  note[num][5]=temp;
}

void change(int num)
{
  if(note[num][1]==1)right(num);
  if(note[num][2]==1)left(num);
  if(note[num][3]==1)down(num);
  if(note[num][5]==1)up(num);
  if(note[num][6]==1){right(num);right(num);}
}

int compare(int num)
{
  int i,j,k;
  for(i=0;i<num;i++)
    {
      k=1;
      for(j=1;j<7;j++)
        if(note[i][j]!=note[num][j])k=0;
      if(k){note[num][0]=note[i][0];return 0;}
    }
  total++;note[num][0]=total;
  return 0;
}

void work()
{
  int i;
  if(note[0][4]!=1)change(0);note[0][0]=1;total=1;
  for(i=1;i<n;i++)
    {
      if(note[i][4]!=1)change(i);
      compare(i);
    }
}

void out()
{
  int i,j;
  printf("%d\n",total);total++;
  for(i=1;i<total;i++)
    {
      for(j=0;j<n;j++)
        if(note[j][0]==i)printf("%d ",j+1);
      printf("\n");
    }
}

void main()
{
  init();
  work();
  out();
}

nothing