Hi mirchi,

Do you test N = 16, H = 8?

It gives stack overflow when I run your program on my box.

I wrote a small one. May it help you.

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>


const int MAX_N = 20;

void Solve (char a[], int n, int d, int rest)
{
        if (d == n)
        {
                if (rest == 0)
                {
                        a[n] = '\0';
                        printf ("%s\n", a);
                }

                return;
        }

        if (n >= rest + d)
        {

                if (n > rest + d)
                {
                        a[d] = '0';
                        Solve (a, n, d + 1, rest);
                }

                a[d] = '1';
                Solve (a, n, d + 1, rest - 1);
        }
}


void main ()
{
        //freopen( "out.txt", "w",  stdout);

        char a[MAX_N] = {'\0'};
        int nCase = 0;
        scanf ("%d", &nCase);

        for (int i = 0; i < nCase; ++i)
        {
                int N = 0;
                int H = 0;
                scanf ("%d%d", &N, &H);

                Solve (a, N, 0, H);
        }
}




On May 16, 7:07 pm, mirchi <[EMAIL PROTECTED]> wrote:
> the link ishttp://acm.uva.es/p/v7/729.html
> try the problem..
> mine is giving a wrong answer...
> but my output seems to be fine.
>
> #include<stdio.h>
> #include<stdlib.h>
> #include<string.h>
> struct strin
> {
>        char st[20];
>        struct strin * next;};
>
> typedef struct strin stri;
> void func (int k , int m , int r , int n , char *str , int count ,stri
> **first);
> void add(char *str,stri **first);
> void prin(stri **first);
> int main()
> {
>     stri *first=NULL;
>     int i,count=0;
>     int noi,ij;
>     int r,n;
>     char *str;
>     scanf("%d",&noi);
>     for(ij=0;ij<noi;ij++)
>     {
>            scanf("%d %d",&n,&r);
>            str=(char *)malloc(sizeof(char)*(n+1));
>            for(i=0;i<n;i++)
>            {
>                     str[i]='0';
>            }
>            str[n]='\0';
>            func(0,n-r,r,n,str,count,&first);
>            prin(&first);
>            printf("\n");
>            first=NULL;
>     }
>     system("pause");
>     return 0;}
>
> void func (int k , int m , int r , int n , char *str,int count,stri
> **first)
> {
>     int i,j ;
>     if(count==(r-1))
>     {
>               for(j=k;j<n;j++)
>               {
>                               str[j]='1';
>                               if(j!=k)
>                               str[j-1]='0';
>                               add(str,first);
>               }
>               str[j-1]= '0';
>               return ;
>     }
>     else
>     {
>               for(i=k;i<=m;i++)
>               {
>                               str[i]='1';
>                               if(i!=k)str[i-1]='0';
>                               func(i+1,m+1,r,n,str,count+1,first);
>               }
>     }}
>
> void add(char *str,stri **first)
> {
>      static stri *p=NULL;
>      if((*first)==NULL)
>      {
>                        *first=(stri *)malloc(sizeof(stri));
>                        strcpy((*first)->st,str);
>                        (*first)->next=NULL;
>                        p=*first;
>      }
>      else
>      {
>          (p->next)=(stri *)malloc(sizeof(stri));
>          p=p->next;
>          strcpy(p->st,str);
>          p->next=NULL;
>      }}
>
> void prin(stri **first)
> {
>      if((*first)==NULL)
>      return;
>      else
>      {
>                        prin(&((*first)->next));
>                        printf("%s\n",(*first)->st);
>      }
>
> }
>
> On May 16, 2:16 pm, "Dhruva Sagar" <[EMAIL PROTECTED]> wrote:
>
>
>
> > I don't know about this...Can you tell me the site where your trying to
> > submit this problem?
> > Is it some local (LAN) setup where you are having this submissions as a part
> > of some competition or is it in the internet? If in the internet give me the
> > link i'll see if i can find something...
>
> > On 5/16/07, mirchi <[EMAIL PROTECTED]> wrote:
>
> > > u r rite..but now tht prblem is solved the problem i am facing to
> > > submit the code is that it does not print the code in lexicographical
> > > order...
>
> > > On May 16, 1:56 pm, "Dhruva Sagar" <[EMAIL PROTECTED]> wrote:
> > > > str[n]=NULL;
> > > > I think it should be str[n-1]='\0'; (String null character).
> > > > And the loop should run from i=0;i<n-1.
> > > > The memory allocated would be of size n, i.e. 0 to n-1. str[n] would be
> > > > outside the allocated memory...
>
> > > > Correct me if i m wrong.
>
> > > > ---------- Forwarded message ----------
> > > > From: mirchi <[EMAIL PROTECTED]>
> > > > Date: May 16, 2007 2:20 PM
> > > > Subject: [algogeeks] Re: acm problem : i need help
> > > > To: Algorithm Geeks <[email protected]>
>
> > > > that problem is solved..but now the reply is "wrong answer".
> > > > the problem asks for printing the strings in ascending lexicographical
> > > > order.
> > > > wat does this mean??
>
> > > > On May 16, 12:55 pm, "Yingjie Xu" <[EMAIL PROTECTED]> wrote:
> > > > > a c style string with length n needs n+1 memory space.
>
> > > > > On 5/16/07, mirchi <[EMAIL PROTECTED]> wrote:
>
> > > > > > hello people ,
> > > > > > i am facing a problem in submission of "The Hamming Disteance "
> > > > > > problem. the output seems to be fine. but the program crashes in
> > > > > > between. the error says:
>
> > > > > > The instruction at "0x7c93426d" referenced memory at "0x00000000" .
> > > > > > The memory could not be "read" .
>
> > > > > > and the acm feedback error says :
>
> > > > > > Your program has died with signal 11 (SIGSEGV). Meaning:
>
> > > > > >   Invalid memory reference
>
> > > > > > Before crash, it ran during 0.004 seconds.
>
> > > > > > the code is as below :
>
> > > > > > #include<stdio.h>
> > > > > > #include<stdlib.h>
> > > > > > void func (int k , int m , int r , int n , char *str , int count);
> > > > > > int main()
> > > > > > {
> > > > > >    int i,count=0;
> > > > > >    int noi,ij;
> > > > > >    int r,n;
> > > > > >    char *str;
> > > > > >    scanf("%d",&noi);
> > > > > >    for(ij=0;ij<noi;ij++)
> > > > > >    {
> > > > > >           scanf("%d %d",&n,&r);
> > > > > >           str=(char *)malloc(sizeof(char)*n);
> > > > > >           for(i=0;i<n;i++)
> > > > > >           {
> > > > > >                    str[i]='0';
> > > > > >           }
> > > > > >           str[n]=NULL;
> > > > > >           func(0,n-r,r,n,str,count);
> > > > > >    }
> > > > > >    return 0;
> > > > > > }
> > > > > > void func (int k , int m , int r , int n , char *str,int count)
> > > > > > {
> > > > > >    int i,j ;
> > > > > >    if(count==(r-1))
> > > > > >    {
> > > > > >              for(j=k;j<n;j++)
> > > > > >              {
> > > > > >                              str[j]='1';
> > > > > >                              if(j!=k)
> > > > > >                              str[j-1]='0';
> > > > > >                              printf("%s\n",str);
> > > > > >              }
> > > > > >              str[j-1]= '0';
> > > > > >              return ;
> > > > > >    }
> > > > > >    else
> > > > > >    {
> > > > > >              for(i=k;i<=m;i++)
> > > > > >              {
> > > > > >                              str[i]='1';
> > > > > >                              if(i!=k)str[i-1]='0';
> > > > > >                              func(i+1,m+1,r,n,str,count+1);
> > > > > >              }
> > > > > >    }
> > > > > > }
>
> > > > > > thanx in advance !
>
> > > > --
> > > > Thanks & Regards,
> > > > Dhruva Sagar.
>
> > --
> > Thanks & Regards,
> > Dhruva Sagar.- Hide quoted text -
>
> - Show quoted text -


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/algogeeks
-~----------~----~----~----~------~----~------~--~---

Reply via email to