1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
bezimeni [28]
3 years ago
10

Implement a C program to solve the 15-puzzle problem using the A* search algorithm.

Computers and Technology
1 answer:
fomenos3 years ago
7 0

Answer:

#include<stdio.h>

#include<conio.h>

int m=0,n=4;

int cal(int temp[10][10],int t[10][10])

{

               int i,j,m=0;

               for(i=0;i < n;i++)

                               for(j=0;j < n;j++)

                               {

                                               if(temp[i][j]!=t[i][j])

                                               m++;

                               }

               return m;

}

int check(int a[10][10],int t[10][10])

{

               int i,j,f=1;

               for(i=0;i < n;i++)

                               for(j=0;j < n;j++)

                                               if(a[i][j]!=t[i][j])

                                                               f=0;

               return f;

}

void main()

{

               int p,i,j,n=4,a[10][10],t[10][10],temp[10][10],r[10][10];

               int m=0,x=0,y=0,d=1000,dmin=0,l=0;

               clrscr();

               printf("\nEnter the matrix to be solved,space with zero :\n");

               for(i=0;i < n;i++)

                               for(j=0;j < n;j++)

                                               scanf("%d",&a[i][j]);

               printf("\nEnter the target matrix,space with zero :\n");

               for(i=0;i < n;i++)

                               for(j=0;j < n;j++)

                                               scanf("%d",&t[i][j]);

               printf("\nEntered Matrix is :\n");

               for(i=0;i < n;i++)

               {

                               for(j=0;j < n;j++)

                                               printf("%d\t",a[i][j]);

                               printf("\n");

               }

               printf("\nTarget Matrix is :\n");

               for(i=0;i < n;i++)

               {

                               for(j=0;j < n;j++)

                                               printf("%d\t",t[i][j]);

                               printf("\n");

               }

               while(!(check(a,t)))

               {

                               l++;

                               d=1000;

                               for(i=0;i < n;i++)

                                               for(j=0;j < n;j++)

                                               {

                                                               if(a[i][j]==0)

                                                               {

                                                                               x=i;

                                                                               y=j;

                                                               }

                                               }

                               //To move upwards

                               for(i=0;i < n;i++)

                                               for(j=0;j < n;j++)

                                                               temp[i][j]=a[i][j];

                               if(x!=0)

                               {

                                               p=temp[x][y];

                                               temp[x][y]=temp[x-1][y];

                                               temp[x-1][y]=p;

                               }

                               m=cal(temp,t);

                               dmin=l+m;

                               if(dmin < d)

                               {

                                               d=dmin;

                                               for(i=0;i < n;i++)

                                                               for(j=0;j < n;j++)

                                                                               r[i][j]=temp[i][j];

                               }

                               //To move downwards

                               for(i=0;i < n;i++)

                                               for(j=0;j < n;j++)

                                                               temp[i][j]=a[i][j];

                               if(x!=n-1)

                               {

                                               p=temp[x][y];

                                               temp[x][y]=temp[x+1][y];

                                               temp[x+1][y]=p;

                               }

                               m=cal(temp,t);

                               dmin=l+m;

                               if(dmin < d)

                               {

                                               d=dmin;

                                               for(i=0;i < n;i++)

                                                               for(j=0;j < n;j++)

                                                                               r[i][j]=temp[i][j];

                               }

                               //To move right side

                               for(i=0;i < n;i++)

                                               for(j=0;j < n;j++)

                                                               temp[i][j]=a[i][j];

                               if(y!=n-1)

                               {

                                               p=temp[x][y];

                                               temp[x][y]=temp[x][y+1];

                                               temp[x][y+1]=p;

                               }

                               m=cal(temp,t);

                               dmin=l+m;

                               if(dmin < d)

                               {

                                               d=dmin;

                                               for(i=0;i < n;i++)

                                                               for(j=0;j < n;j++)

                                                                               r[i][j]=temp[i][j];

                               }

                               //To move left

                               for(i=0;i < n;i++)

                                               for(j=0;j < n;j++)

                                                               temp[i][j]=a[i][j];

                               if(y!=0)

                               {

                                               p=temp[x][y];

                                               temp[x][y]=temp[x][y-1];

                                               temp[x][y-1]=p;

                               }

                               m=cal(temp,t);

                               dmin=l+m;

                               if(dmin < d)

                               {

                                               d=dmin;

                                               for(i=0;i < n;i++)

                                                               for(j=0;j < n;j++)

                                                                               r[i][j]=temp[i][j];

                               }

                               printf("\nCalculated Intermediate Matrix Value :\n");

                               for(i=0;i < n;i++)

                               {

                                               for(j=0;j < n;j++)

                                               printf("%d\t",r[i][j]);

                                               printf("\n");

                               }

                               for(i=0;i < n;i++)

                                               for(j=0;j < n;j++)

                                               {

                                               a[i][j]=r[i][j];

                                               temp[i][j]=0;

                                               }

                               printf("Minimum cost : %d\n",d);

               }

               getch();

}

Explanation:

You might be interested in
I just logged onto brainly and all my questions were deleted and i lost 2 brainliest. What has brainly done to my account I also
krok68 [10]
I’d say message Brainly directly through email!! it would be easier for them to help solve the issue since all we really can do is assume what happened, I hope you’re able to figure it out =)
5 0
3 years ago
Read 2 more answers
One disadvantage of using the styles feature of a word processor is that you cannot modify existing styles. true or false
gayaneshka [121]
I think its false
but im not possitive

8 0
3 years ago
Can any existing directory beneath the system root directory be used as a mount point?
musickatia [10]
<span>Yes.
   A mount point mounts a capacity gadget or filesystem, making it available and appending it to a current registry structure.
    While an umount point "unmounts" a mounted filesystem, illuminating the framework to finish any pending read or compose activities, and securely confining it.</span>
7 0
3 years ago
Which programming language looks similar to human languages?
Fynjy0 [20]
There is only one programming language that is closest to a human language and is the most easy to learn other than HTML or CSS. 

That language would be AppleScript. for both its simplicity and power, it has become an ideal language for basic Apple programmers to learn. 
5 0
4 years ago
FOR CALL OF DUTY MOBILE GAMERS PLS HELP!
statuscvo [17]

since the app are two different things its crucial to have a activision account, though the progress wont be reset unless you do have an activision account

8 0
2 years ago
Other questions:
  • How to hack the school system
    13·1 answer
  • What does computer means?
    9·2 answers
  • Individuals with desirable traits will be __________ to have young that survive than individuals without these traits. (2 points
    5·2 answers
  • A technician suspects a network card is not working. Which tool should the technician use to test the network card?
    14·1 answer
  • Given the scenario, before leaving the office, you ask the CIO to provide which formal document authorizing you to perform certa
    11·1 answer
  • Media applications that play audio or video files are part of a class of workkloads called "streaming" workloads (i.e., they bri
    9·1 answer
  • The online underground is used _____. Select 3 options. by law-abiding citizens only on Black Friday for networking by criminal
    11·1 answer
  • Write a program that displays the average temperature and the annual precipitation for a selected city. The user should be able
    10·1 answer
  • A _____ focuses on creating software systems like tools, utilities, antivirus programs, and operating systems.
    12·2 answers
  • 20
    8·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!