void towers(int n, char fromrod, char torod, char intermediaterod) {
	if(n == 1) {
		printf("Disk 1 moving from rod %c to rod %c using %c as intermediate rod\n", fromrod, torod, intermediaterod);
		return;
	}
	towers(n-1, fromrod, intermediaterod, torod);
	printf("Disc %d moving from rod %c to rod %c using %c as intermdiate rod\n", n, fromrod, torod, intermediaterod);
	towers(n-1, intermediaterod, torod, fromrod);
}
Ejemplo n.º 2
0
 void towers(int n, char frompeg, char topeg ,char auxpeg)
 {
 	if(n==1) {
 		printf("\n%s%c%s%c" , "move disk 1 from peg ", frompeg, "to peg ", topeg);
 		return;
	 }
	 towers(n-1, frompeg, auxpeg, topeg);
	 printf("\n%s%d%s%c%s%c", "move disk ", n, "from peg ",frompeg,"to peg ",topeg);
	 towers(n-1,auxpeg, topeg, frompeg);
 }
Ejemplo n.º 3
0
void towers(int n, char f, char t, char a)
{
  if (n==1)
  {
  printf("\n Move disk 1 from peg %c to peg %c", f, t);
  return;
  }
towers(n - 1, f, a, t);
printf("\n Move disk %d from peg %c to peg %c", n, f, t);
towers(n - 1, a, t, f);
}
Ejemplo n.º 4
0
void towers(int num, char from, char to, char aux)
{
    if (num == 1)
    {
        printf("\n Move disk 1 from peg %c to peg %c", from, to);
        return;
    }
    towers(num - 1, from, aux, to);
    printf("\n Move disk %d from  %c to peg %c", num, from, to);
    towers(num - 1, aux, to, from);
}
Ejemplo n.º 5
0
void towers(int n,char frompeg,char topeg,char auxpeg)
{
    if(n==1)
    {
        printf("\nMove disk 1 from peg %c to peg %c",frompeg,topeg);
        return;
    }
    towers(n-1,frompeg,auxpeg,topeg);
    printf("\nMove disk %d from peg %c to peg %c",n,frompeg,topeg);
    towers(n-1,auxpeg,topeg,frompeg);
}
Ejemplo n.º 6
0
void towers(int num, char frompeg, char topeg, char auxpeg)
{
    if (num == 1)
    {
        printf("\n Move disk 1 from peg %c to peg %c", frompeg, topeg);
        return;
    }
#pragma omp parallel
    towers(num - 1, frompeg, auxpeg, topeg);
    printf("\n Move disk %d from peg %c to peg %c", num, frompeg, topeg);
    towers(num - 1, auxpeg, topeg, frompeg);
}
Ejemplo n.º 7
0
void towers (int n, char from, char to, char aux)
{
    if
    (n==1)
        printf("move disco %d da estaca %c p/ a estaca %c\n", 1, from, to);
    else
    {
        towers(n-1, from, aux, to);
        printf("move disco %d da estaca %c p/ a estaca %c\n", n, from, to);
        towers(n-1, aux, to, from);
    }

}
void towers(int n,char fpg,char tpg,char apg)
{
	if(n==1)
	{
		printf("\n1 - %c - %c",fpg,tpg);
		return;
	}

	towers(n-1,fpg,apg,tpg);
	printf("\n%d - %c - %c",n,fpg,tpg);

	towers(n-1,apg,tpg,fpg);
}
Ejemplo n.º 9
0
void towers(int n,char source,char destination,char auxiliary)
{
     static int step=0;
     if (n==1)
        printf("\t\t\t Step %3d:Move from %c to %c \n",++step,source,destination);
     else
     {
        towers(n-1,source,auxiliary,destination);
     printf("\t\t\t Step %3d:Move from %c to %c \n",++step,source,destination);
       towers(n-1,auxiliary,destination,source);
     } 
    return;
}         
Ejemplo n.º 10
0
void towers(int n,char frompeg,char topeg,char auxpeg)
	{ /* If only 1 disk, make the move and return */
	  if(n==1)
	    { printf("\nMove disk 1 from peg %c to peg %c",frompeg,topeg);
	      return;
	    }
	  /* Move top n-1 disks from A to B, using C as auxiliary */
	  towers(n-1,frompeg,auxpeg,topeg);
	  /* Move remaining disks from A to C */
	  printf("\nMove disk %d from peg %c to peg %c",n,frompeg,topeg);
	  /* Move n-1 disks from B to C using A as auxiliary */
	  towers(n-1,auxpeg,topeg,frompeg);
	}
Ejemplo n.º 11
0
void towers(int num, char source, char auxi, char dest)
{
    if (num == 1)
    {
        printf("\n Move disk 1 from peg %c to peg %c", source, dest);
        return;
    }
    //recursion function call
    towers(num - 1, source,dest,auxi);
    printf("\n Move disk %d from peg %c to peg %c", num, source,dest);
    //recursion function call
    towers(num - 1, auxi, source,dest);
    //recursion function call
}
Ejemplo n.º 12
0
void towers(std::size_t n, pin* A, pin* B, pin* C, std::size_t& count)
{
    count++;
    if (n == 1) A->move(C);
    if (n == 2) {                   // Base case
        A->move(B);
        A->move(C);
        B->move(C);
    }
    if (n > 2) {
        towers(n-1, A, C, B, count);
        A->move(C);
        towers(n-1, B, A, C, count);
    }
}
Ejemplo n.º 13
0
void towers(int n, char fromrod, char torod, char auxrod)
{ 
	/* If only 1 disk, make the move and return */
	if(n==1)
	{ printf("\nMove disk 1 from Tower %c ---> Tower %c", fromrod, torod);
	  return;
	}
	
	/* Move top n-1 disks from A to C, using B as auxiliary */
	towers(n-1, fromrod, auxrod, torod);
	/* Move remaining disks from A to B */
	printf("\nMove disk %d from Tower %c ---> Tower %c", n, fromrod, torod);
	/* Move n-1 disks from C to B using A as auxiliary */
	towers(n-1,auxrod,torod,fromrod);
}
Ejemplo n.º 14
0
int main (void){
  //number of disks
  int n = 4;
  towers(n,first,last,mid);
  drive_goto(52,0);
  return 0;
}
Ejemplo n.º 15
0
void main()
{
	int n;
	printf("Enter the number of disks\n");
	scanf("%d",&n);
	towers(n,'A','C','B');
}
Ejemplo n.º 16
0
main()
	{ int n;
	  printf("Enter the number of disks : ");
	  scanf("%d",&n);
	  printf("The Tower of Hanoi involves the moves :\n\n");
	  towers(n,'A','C','B');
	  return 0;
	}
Ejemplo n.º 17
0
//start of the main function
int main()
{
    int num;
    printf("Enter the number of disks : ");
    scanf("%d", &num);
    printf("The sequence of moves involved in the Tower of Hanoi are :\n");
    towers(num, 'A', 'B', 'C');
    return 0;
}
Ejemplo n.º 18
0
void towers(int n, char first, char last, char mid){
  
  // If only 1 disk, make the move and return
  if(n==1){ printf("\nDisk 1 from peg %c to %c",first,last);
    checkMove(first,last);
    return;
  }
  
  // Move top n-1 disks from A to B, using C as auxiliary
  towers(n-1,first,mid,last);

  // Move remaining disks from A to C 
  printf("\nMove disk %d from peg %c to peg %c",n,first,last);
  checkMove(first,last);

  // Move n-1 disks from B to C using A as auxiliary
  towers(n-1,mid,last,first);
}
Ejemplo n.º 19
0
int main()
{
int n;
printf("Enter the number of disks : ");
scanf("%d", &n);
printf("The sequence of moves :\n");
towers(n, 'A', 'C', 'B');   
return 0;
}
Ejemplo n.º 20
0
int main(void)
{
      int numDisks;
      printf("Enter the number of disks");
      scanf("%d",&numDisks);
      printf("Starting tower of Hannoi");
      towers(numDisks,'A','C','B');
      getch();
      return 0;
}
Ejemplo n.º 21
0
void main()
	{ 
	  int n;
	  clrscr();
	  printf("Enter the number of disks : ");
	  scanf("%d",&n);
	  printf("The Tower of Hanoi involves the moves :\n\n");
	  towers(n,'A','C','B');
	  getch();
	}
void main()
{
	int n;

	clrscr();

	printf("Enter the total number of Pegs:-\t");
	scanf("%d",&n);

	printf("\n\n");
	towers(n,'A','C','B');
	getch();
}
Ejemplo n.º 23
0
//recursive algorithm to solve the towers of hanoi problem. Used in demo mode
void towers(int n, struct col *stackA, struct col *stackC, struct col *stackB){
	
	int val;
	char from, to;
	/* If only 1 disk, make the move and return */
	if(n==1){
		val = pop(stackA);        //pop from Stack A and
		push(val, stackC);        //push onto Stack C
		system("cls");
		if(stackA->size==100) from='A';
		else if(stackA->size==101) from='B';
		else from='C';
		if(stackC->size==100) to='A';
		else if(stackC->size==101) to='B';
		else to='C';
		printStacks();
		printf("\nMove disk %d from %c to %c",n, from, to);
		wait(playback);  //waits for the amount of time specified by the user. this is what determines the playback speed.
		return;
	}
	/* Move top n-1 disks from A to B, using C as auxiliary */
	towers(n-1,stackA,stackB,stackC);
	/* Move remaining disks from A to C */
	val = pop(stackA);
	push(val, stackC);
	system("cls");
	if(stackA->size==100) from='A';
	else if(stackA->size==101) from='B';
	else from='C';
	if(stackC->size==100) to='A';
	else if(stackC->size==101) to='B';
	else to='C';
	printStacks();
	printf("\nMove disk %d from %c to %c",n, from, to);
	wait(playback);
	/* Move n-1 disks from B to C using A as auxiliary */
	towers(n-1,stackB,stackC,stackA);
}
Ejemplo n.º 24
0
void main ()
{
    int n;
    char from, to, aux;

    printf ("Escreva o número de discos: ");
    scanf ("%d", &n);

    from = 'A';
    to = 'C';
    aux = 'B';

    towers(n,from,to,aux);
}
Ejemplo n.º 25
0
void Demo(){
	system("cls"); //clear screen
	printf("How many discs(1-10) do you want to solve?\n>>");
	int n;
	float m;
	scanf("%d", &n); //get the number of discs the user wants
	fillA(n);        //fill stack A with the specified number
	printf("What is you preferred playback speed:1(fast)-10(slow)\n>>");
	scanf("%f", &m); // get the preferred playback speed
	playback = m/5;  //scale it down to usable value
	towers(n, headA, headC, headB); //solve the towers of hanoi problem
	printf("\nReturning to main menu...");
	wait(2);    //wait for 2 seconds then return to the main menu
	return;
}
Ejemplo n.º 26
0
void main()

{

    int num;
    clrscr();

    printf("Enter the number of disks : ");

    scanf("%d", &num);

    printf("The sequence of moves involved in the Tower of Hanoi are :\n");

    towers(num, 'A', 'C', 'B');
    getch();

}
Ejemplo n.º 27
0
int main( )
{
    std::size_t count = 0;
    std::size_t n;
    cout << "Enter the number of disks initially on the source pin: " << endl;
    cout << "Or press '0' then the return key to look at the stacks mini ref output" << endl;
    cin >> n;
    if(n == 0)
    {
         stack_ref();
         return 0;
    }
    pin source(n), auxiliary, destination;
    towers(n, &source, &auxiliary, &destination, count);
    cout << "Number of time towers( ) is activated = " << count << endl;
    return(0);
}
Ejemplo n.º 28
0
std::vector<Athlete> findLongestSubsequenceByWeights(const Athletes &athletes) {

	std::vector<Tower> towers(athletes.size());

	for (int i = athletes.size() - 1; i >= 0 ; --i) {
		Athlete nextTopAthlete = athletes[i];
		for (int j = i + 1 ; j < athletes.size() ; ++j) {
			Athlete prevTopAthlete = athletes[j];
			if (prevTopAthlete.weight() > nextTopAthlete.weight() && 
				(towers[j].size + 1) >  towers[i].size)
			{
				towers[i].prevAthleteIdx = j;
				towers[i].size = towers[j].size + 1;
			}
		}
	}

	int topAthlete = findBiggestTower(towers);
	std::vector<Athlete> tower = getAthletesInTower(towers, athletes, topAthlete);
	return tower;
}
Ejemplo n.º 29
0
void towers (int ndisks, string src, string tmp, string dst) {
   if (ndisks < 1) return;
   towers (ndisks - 1, src, dst, tmp);
   move (src, dst);
   towers (ndisks - 1, tmp, src, dst);
}
Ejemplo n.º 30
0
int main()
{
int n;
scanf("%d",&n);
towers(n, 'A' ,'C' ,'B');
}