Розділи нашого сайту


1.Новини
2.Про gpd
3.Скарги учасників
4.Розв"язки та алґоритми gpd
5.Тести
6.Гістьова книга
7.Лінки
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define uchar unsigned char

char s[256], s2[256];
uchar a[255][255];
uchar i, j, k, N;


uchar min(uchar a,uchar b)
{
  if (a < b)
    return a;
  else
    return b;
}


int main(void)
{
  uchar FORLIM, FORLIM1, FORLIM2;

  gets(s);
  *s2 = '';
  sprintf(s2, "%c", s[0]);
  FORLIM = strlen(s);
  for (i = 2; i <= FORLIM; i++) {
    if (s[i-1] != s[i-2])
      sprintf(s2 + strlen(s2), "%c", s[i-1]);
  }
  strcpy(s, s2);
  N = strlen(s);
  FORLIM = N;
  for (i = 1; i <= FORLIM; i++)
    a[i-1][i-1] = 1;
  FORLIM = N;
  for (k = 1; k <= FORLIM - 1; k++) {
    FORLIM1 = N - k;
    for (i = 1; i <= FORLIM1; i++) {
      if (s[i-1] != s[i + k - 1]) {
	a[i-1][i + k - 1] = 255;
	FORLIM2 = i + k;
	for (j = i; j <= FORLIM2 - 1; j++)
	  a[i-1][i + k - 1] = min(a[i-1][i + k - 1], a[i-1][j-1] + 
				  a[j][i + k - 1]);
      } else {
	a[i-1][i + k - 1] = a[i][i + k - 2] + 1;
	FORLIM2 = i + k;
	for (j = i + 1; j <= FORLIM2 - 1; j++) {
	  if (s[j-1] == s[i-1] &&
	      a[i-1][i + k - 1] > a[i][j-1] + a[j-1][i + k - 2] - 1)
	    a[i-1][i + k - 1] = a[i][j-1] + a[j-1][i + k - 2] - 1;
	}
      }
    }
  }
  printf("%d\n", a[0][N-1]);
}


       

generated by gpd hackers group (c) 2004
Hosted by uCoz