⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zp1499_p1.cpp

📁 一个acm题目系统会自动删除debug和release目录
💻 CPP
字号:
//--------------------------------------------------------

#include<stdio.h>
#include<string.h>

char s[81],temp1[81][81],temp2[81][81];
int len1,len2,et;

int getfirst(char *t)
{
  int i=strlen(t)-1;

  while (i>=0 && t[i]=='0')
    i--;

  return i;
}
int compare(char*t1,char *t2)
{
  int t1f,t2f;
  t1f=getfirst(t1);
  t2f=getfirst(t2);

  if (t1f>t2f)
    return 1;
  else
    if (t2f>t1f)
      return 2;

  while (t1f>=0 && t1[t1f]==t2[t1f])
    t1f--;

  if(t1f==-1)
    return 0;
  else
    return (t2[t1f]>t1[t1f])+1;
}
int check()
{
  int i=len1,j=len2,k;
  while (i>=0 && j>=0 && !(k=compare(temp1[i],temp2[j])))
  {
    i--;
    j--;
  }
  return k;
}
void overmatch()
{
  int i;
  for(i=0;i<=len2;i++)
    strcpy(temp1[i],temp2[i]);

  len1=len2;
  et=1;
}
void confirm()
{
  if(et)
  {
    if (check()==2)
      overmatch();
  }
  else
    overmatch();
}
void find(int p,int k)
{
  if (k==-1)
  {
    len2=p;
    confirm();
    return ;
  }
  int i,j=0;
  for(i=k;i>=0;i--,j++)
  {
    temp2[p+1][j]=s[i];
    temp2[p+1][j+1]='\0';
    if (compare(temp2[p],temp2[p+1])==1)
      find(p+1,i-1);
    else
      return ;
  }
}
int main()
{
  int i,j,len;
  while (1)
  {
    scanf("%s",s);
    len=strlen(s);
    if (s[0]=='0' && len==1)
      return 1;
    et=0;
    for (i=len-1,j=0;i>=0;i--,j++)
    {
      if (et&&s[i]!='0')
        break;
      temp2[0][j]=s[i];
      temp2[0][j+1]='\0';
      find(0,i-1);
    }
    for (i=len1;i>=0;i--)
    {
      len=strlen(temp1[i]);
      for (j=len-1;j>=0;j--)
        printf("%c",temp1[i][j]);
      if (i)
        printf(",");
      else
        printf("\n");
    }
  }
}
//--------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -