the link is http://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.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---