| ²é¿´: 1613 | »Ø¸´: 8 | ||
hsfangгæ (³õÈëÎÄ̳)
|
[ÇóÖú]
¹ØÓÚC++Öнá¹ûÊä³öµÄÎÊÌâ ÒÑÓÐ2È˲ÎÓë
|
|
¸÷λ´óÏÀ£¬ÎÒÓÐÒ»¶Î³ÌÐò´úÂë¿ÉÔËÐУ¬µ«Êǽá¹û¾ÍÊÇÒ»¸öºÚÉ«¿òÖÐÒ»ÉÁ¶ø¹ý£¡ÎÒÏ£Íû°ÑÕâÒ»¹ý³ÌÊý¾Ý·´Ó¦µ½Ò»¸öÎĵµÖУ¬ÔõôÑù²Å¿ÉÒÔ×öµ½ÄØ£¿Ð»Ð» ÈçϳÌÐò£º #include <iostream> using namespace std; struct Node{ char a[3][3]; //±íʾ״̬µÄÊý×é Node * pFather; //Ö¸Ïò½ÚµãµÄ¸¸½Úµã Node * pNext; //ÓÃÓÚ½¨Á¢Á´±í int i0; //½ÚµãÖÐ'0'µÄλÖÃx×ø±ê int j0; //½ÚµãÖÐ'0'µÄλÖÃy×ø±ê }; struct List { Node * Head; //¶ÓÁÐÍ·Ö¸Õë Node * Tail; //¶ÓÁÐβָÕë }; //³õʼ»¯List //²ÎÊý£ºÖ¸ÏòlistµÄÖ¸Õë //·µ»ØÖµ£ºÎÞ void InitList(List * pList) { pList->Head = NULL; pList->Tail = NULL; } //½«Ò»¸ö½ÚµãpNodeÈë¶Ó //²ÎÊý£º¶ÓÁÐÖ¸ÕëpList£»½ÚµãÖ¸ÕëpNode //·µ»ØÖµ£ºÎÞ void InList(List * pList,Node * pNode){ if (!pList->Head) { pList->Head = pNode; pList->Tail = pNode; } else { pList->Tail->pNext = pNode; pList->Tail = pNode; } } //½«¶ÓÁеĵÚÒ»¸ö½Úµã³ö¶Ó //²ÎÊý£º¶ÓÁÐÖ¸ÕëpList //·µ»ØÖµ£º¶ÓÁÐΪ¿Õ£¬·µ»ØNULL£»¶ÓÁв»Îª¿Õ£¬Ö¸Ïò³ö¶Ó½ÚµãÖ¸Õë Node * OutList(List * pList){ Node * temp=NULL; if (!pList->Head) { return NULL; } else { temp = pList->Head; if(pList->Head == pList->Tail) //Ö»ÓÐÒ»¸ö½Úµã { pList->Head = NULL; pList->Tail = NULL; } else { pList->Head =temp->pNext; //²»Ö¹Ò»¸ö½Úµã } return temp; } } //ÅжÏÁ½¸ö½ÚµãµÄ״̬ÊÇ·ñÒ»Ö //²ÎÊý£ºÁ½¸öÖ¸Ïò½ÚµãµÄÖ¸ÕëpNode1¡¢pNode2 //·µ»ØÖµ£ºÒ»ÖÂtrue£»²»Ò»ÖÂfalse bool IsEqual(Node * pNode1,Node * pNode2) { if(!pNode1 || !pNode2){ return true; } for(int i = 0;i < 3;i++) { for (int j = 0;j < 3;j++) { if(!pNode1->a || !pNode2->a) { return true; } if (pNode1->a[j] != pNode2->a[j]) { return false; } } } return true; } //¿½±´Ò»¸ö½ÚµãµÄ״̬µ½ÐµĽڵã //²ÎÊý£ºNodeµÄÖ¸Õ룺pNew£¬pOld //·µ»ØÖµ£ºÎÞ void CopyNode(Node * pNew,Node * pOld) { for(int i = 0;i < 3;i++) { for (int j = 0;j < 3;j++) { pNew->a[j] = pOld->a[j]; } } } //¸ø¶¨Ò»¸ö½Úµã£¬À©Õ¹³ö¸Ã½ÚµãµÄËùÓÐ×ӽڵ㣬·µ»ØÒ»¸ö±£´æËùÓнڵãµÄList //²ÎÊý;Ö¸ÏòÖ¸Õë½ÚµãµÄÖ¸Õë //·µ»ØÖµ£ºListÖ¸Õë List * ExpandSub(Node * pNode){ //±£´æÒƶ¯ºó,'0'ÔªËØµÄλÖÃ×ø±ê int i = 0; int j = 0; //ÉùÃ÷±£´æËùÓнڵãµÄList List * pSubList; pSubList = new List; InitList(pSubList); for (int iAdd = -1;iAdd <= 1;iAdd++) { for (int jAdd = -1;jAdd <= 1;jAdd++) { //ÅųýÔöÁ¿£¨-1£¬-1£©¡¢£¨-1,1£©¡¢£¨0,0£©¡¢£¨1£¬-1£©¡¢£¨1,1£© if(iAdd == 0 &&jAdd == 0) { continue; } if(iAdd != 0 &&jAdd != 0) { continue; } //¼ÆËãÒÆ¶¯ºóµÄ'0'ÔªËØµÄλÖÃ×ø±ê i = pNode->i0 + iAdd; j = pNode->j0 + jAdd; //ÅųýÊý×éÔ½½çÇé¿ö if (i < 0 || j < 0 || i > 2 || j > 2) { continue; } //×Ó½ÚµãÖ¸Õë Node * pSub; pSub = new Node; //³õʼ»¯×Ó½Úµã pSub->i0 = i; pSub->j0 = j; pSub->pFather = pNode; pSub->pNext = NULL; CopyNode(pSub,pNode); pSub->a[pNode->i0][pNode->j0] = pSub->a[j]; pSub->a[j] = '0'; //×Ó½ÚµãÈë¶Ó InList(pSubList,pSub); } } return pSubList; } //´òӡij¸ö½Úµã //²ÎÊý£º½ÚµãÖ¸Õë //·µ»ØÖµ£ºÎÞ void printNode(Node * pNode) { cout<<"-----------------\n"; for(int i = 0;i < 3;i++) { for (int j = 0;j < 3;j++) { cout<<pNode->a[j]<<"\t"; } cout<<endl; } cout<<"-----------------\n"; } //´òÓ¡½á¹û //²ÎÊý£ºNodeÖ¸Õë //·µ»ØÖµ£ºÎÞ void printPath(Node * pResult) { Node * temp; temp = pResult; while (temp) { printNode(temp); temp = temp->pFather; } } //ËÑË÷ij¸öListÖÐÊÇ·ñ³öÏֺͽڵãpNode״̬һÖµĽڵã //²ÎÊý£ºNodeÖ¸Õ룬½ÚµãÖ¸ÕëpNode //·µ»ØÖµ£º³öÏÖtrue£¬Ã»ÓгöÏÖfalse bool IsAppeared(Node * pStart,Node * pNode) { Node * temp ; temp = pStart; while (temp) { if(IsEqual(temp,pNode)) { return true; } temp = temp->pNext; } return false; } //×Ó½ÚµãÈë¶Ó //²ÎÊý£ºNode * pStart,List * £¬Node *£» //·µ»ØÖµ£º ÎÞ void SubNodeInList(Node * pStart,List * list,Node * pOut) { Node * temp; Node * temp1; //±£´æ×Ó½Úµã¶ÓÁÐ List * pSubList = NULL; pSubList = new List; InitList(pSubList); pSubList = ExpandSub(pOut); temp = OutList(pSubList);//È¡×Ó½Úµã while (temp) { if(IsAppeared(pStart,temp)) { temp1 = temp; temp = temp->pNext; delete temp1; } else { Node * tempSwap =NULL; tempSwap = new Node; CopyNode(tempSwap,temp); tempSwap->i0 = temp->i0; tempSwap->j0 = temp->j0; tempSwap->pFather = temp->pFather; tempSwap->pNext = NULL; InList(list,tempSwap); temp = temp->pNext; } } } //ËÑË÷º¯Êý //²ÎÊý£ºÔʼ½ÚµãÖ¸ÕëpSrc£¬Ä¿µÄ½ÚµãÖ¸ÕëpDes //ÎÞ½á¹û£¬·µ»ØNULL£»Óнá¹û£¬·µ»Ø±£´æÂ·¾¶µÄListÖ¸Õë Node * Search(Node * pSrc,Node * pDes) { //±£´æ¶ÓÁÐÍ·½Úµã Node * pStart = pSrc; //ÓÃÀ´±£´æ½á¹û Node * pResult = NULL; //ÓÃÀ´±éÀú List * list = NULL; list = new List; InitList(list); //Èë¶Ó InList(list,pSrc); int i = 1; bool flagxx = false; Node * pOut = NULL; pOut = OutList(list); Node * s; while (pOut) { SubNodeInList(pStart,list,pOut); pOut = OutList(list); if(!flagxx) { pSrc->pNext=pOut; flagxx = true; } s = pStart; while(s) { if(IsEqual(s,pDes)) { pResult = s; return pResult; } s=s->pNext; } //cout<<"\n\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n"; } return NULL; } int main() { Node temp = {{{'1','2','3'},{'4','0','6'},{'7','5','8'}},NULL,NULL,1,1}; //Ôʼ״̬ //Ö¸ÏòÔʼ״̬µÄÖ¸Õë Node * pSrc; pSrc = &temp; Node TEMP = {{{'1','2','3'},{'4','5','6'},{'7','8','0'}},NULL,NULL,2,2}; //Ä¿µÄ״̬z //Ö¸ÏòÄ¿µÄ״̬µÄÖ¸Õë Node * pDes; pDes = &TEMP; Node * pResult = NULL; pResult = Search(pSrc,pDes); if (!pResult) { cout<<"ÎÊÌâÎ޽⣡"; } else { printPath(pResult); } /*²âÊÔº¯ÊýList * ExpandSub(Node * pNode) List * p; p = new List; InitList(p); p = ExpandSub(pSrc); printList(p); */ system("pause" ;return 0; } [ Last edited by hsfang on 2014-3-18 at 17:01 ] |
» ²ÂÄãϲ»¶
Çóµ÷¼ÁԺУÐÅÏ¢
ÒѾÓÐ4È˻ظ´
085600²ÄÁÏÓ뻯¹¤306
ÒѾÓÐ4È˻ظ´
286Çóµ÷¼Á
ÒѾÓÐ10È˻ظ´
328Çóµ÷¼Á£¬Ó¢ÓïÁù¼¶551£¬ÓпÆÑоÀú
ÒѾÓÐ9È˻ظ´
Ò»Ö¾Ô¸±±¾©»¯¹¤´óѧ070300 ѧ˶336Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
286·ÖÈ˹¤ÖÇÄÜרҵÇëÇóµ÷¼ÁÔ¸Òâ¿ç¿¼£¡
ÒѾÓÐ8È˻ظ´
×ÊÔ´Óë»·¾³ µ÷¼ÁÉêÇë(333·Ö)
ÒѾÓÐ5È˻ظ´
280Çóµ÷¼Á
ÒѾÓÐ12È˻ظ´
269ר˶Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
²ÄÁÏѧ˶301·ÖÇóµ÷¼Á
ÒѾÓÐ7È˻ظ´
» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:
gaussviewÖп´µ½Êä³ö½á¹ûµÄÄÜÁ¿ÊÇʲôÄÜÁ¿
ÒѾÓÐ3È˻ظ´
FortranÊä³ö¶þ½øÖÆÊý¾Ý£¬ÓÃmatlab¶Á³ö£¬½á¹û³ö´í£¬ÇóÖúÎÊÌâºÎÔÚ£¿
ÒѾÓÐ4È˻ظ´
ÈçºÎ¿´¼¤·¢Ì¬µÄÊä³ö½á¹û£¿
ÒѾÓÐ3È˻ظ´
fortran³ÌÐòÔËÐнá¹ûÊä³ö¼°»æÍ¼
ÒѾÓÐ9È˻ظ´
OEÖÐÁË£¬½á¹û¡£¡£¡£
ÒѾÓÐ10È˻ظ´
ΪʲôÕâ¸ö³ÌÐòÎÞ·¨Êä³ö½á¹ûÄØ£¿
ÒѾÓÐ9È˻ظ´
Ôõô°ÑC++´¦ÀíµÄÊý¾Ý½á¹ûת»¯µ½Îı¾txtÖУ¿
ÒѾÓÐ5È˻ظ´
FFT±ä»»£¬ÊÇ·ñÄÜÊä³öÏëÒªµÄij¸öƵÂʽá¹û£¿
ÒѾÓÐ12È˻ظ´
C++ÀïÈçºÎ±£Ö¤ºº×ÖºÍ×Ö·ûÒ»ÆðÊä³öʱ¿í¶ÈÏàµÈ£¿
ÒѾÓÐ4È˻ظ´
ÔÚFORTRANÖÐǶÌ×APDL
ÒѾÓÐ10È˻ظ´
ÎÒ±àµÄSimpson»ý·Ö·¨fortran³ÌÐò¸ø²»³ö½á¹û£¬´óÏÀÃÇ¿´¿´ÄÄÀï³öÁËÎÊÌ⣿
ÒѾÓÐ4È˻ظ´
NBO¼ÆËãÊä³ö½á¹ûÖеĸ÷¸ö½á¹¹Æ¬¶ÎÊÇÔõÑùÈ·¶¨µÄ£¿
ÒѾÓÐ20È˻ظ´
FortranµÄ¸ñʽ»¯ÊäÈëÊä³öÎÊÌâ
ÒѾÓÐ14È˻ظ´
¹ØÓÚc++ÖмÆËã½á¹û³öÏÖ-1.#INDµÄÎÊÌâ
ÒѾÓÐ4È˻ظ´
¡¾ÇóÖú¡¿ÇóÖúfluent½á¹ûÊä³ö£¿
ÒѾÓÐ10È˻ظ´
¡¾ÇóÖú¡¿NBOÊä³ö½á¹ûÖеÄNatural charge·ÖÎö
ÒѾÓÐ7È˻ظ´
¡¾ÇóÖú¡¿dev c++±àÒë½áÊø£¬ÔËÐкóÔõôÑùÊä³ö½á¹û£¿
ÒѾÓÐ6È˻ظ´
¡¾ÇóÖú¡¿FortranµÄ¼ÆËã½á¹û
ÒѾÓÐ11È˻ظ´
¡¾ÇóÖú¡¿matlabÖÐÈçºÎ½«³ÌÐòµÄ½á¹ûÊä³öµ½Ò»¸öÎļþÖÐ
ÒѾÓÐ11È˻ظ´
liqizuiyang
ľ³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 59 (³õÖÐÉú)
- ½ð±Ò: 6859.5
- É¢½ð: 261
- ºì»¨: 94
- Ìû×Ó: 2093
- ÔÚÏß: 708.9Сʱ
- ³æºÅ: 2366686
- ×¢²á: 2013-03-21
- ÐÔ±ð: GG
- רҵ: Äý¾Û̬ÎïÐÔ II £ºµç×ӽṹ
2Â¥2014-03-18 19:18:29
ifound
гæ (³õÈëÎÄ̳)
- Ó¦Öú: 2 (Ó×¶ùÔ°)
- ½ð±Ò: 82.6
- Ìû×Ó: 36
- ÔÚÏß: 66.4Сʱ
- ³æºÅ: 3000118
- ×¢²á: 2014-02-27
- רҵ: µ¼º½¡¢ÖƵ¼Óë´«¸Ð¼¼Êõ
3Â¥2014-03-19 11:01:52
houqi1993
гæ (³õÈëÎÄ̳)
- Ó¦Öú: 4 (Ó×¶ùÔ°)
- ½ð±Ò: 19.7
- Ìû×Ó: 7
- ÔÚÏß: 23·ÖÖÓ
- ³æºÅ: 3076236
- ×¢²á: 2014-03-21
- רҵ: ͨÐÅÀíÂÛÓëϵͳ
4Â¥2014-03-21 15:19:35
houqi1993
гæ (³õÈëÎÄ̳)
- Ó¦Öú: 4 (Ó×¶ùÔ°)
- ½ð±Ò: 19.7
- Ìû×Ó: 7
- ÔÚÏß: 23·ÖÖÓ
- ³æºÅ: 3076236
- ×¢²á: 2014-03-21
- רҵ: ͨÐÅÀíÂÛÓëϵͳ
5Â¥2014-03-21 15:20:37
hsfang
гæ (³õÈëÎÄ̳)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 84.3
- Ìû×Ó: 16
- ÔÚÏß: 4Сʱ
- ³æºÅ: 2161536
- ×¢²á: 2012-12-02
- רҵ: ¼ÆËã»úÈí¼þ
6Â¥2014-03-22 09:32:26
hsfang
гæ (³õÈëÎÄ̳)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 84.3
- Ìû×Ó: 16
- ÔÚÏß: 4Сʱ
- ³æºÅ: 2161536
- ×¢²á: 2012-12-02
- רҵ: ¼ÆËã»úÈí¼þ
7Â¥2014-03-22 09:33:42
hsfang
гæ (³õÈëÎÄ̳)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 84.3
- Ìû×Ó: 16
- ÔÚÏß: 4Сʱ
- ³æºÅ: 2161536
- ×¢²á: 2012-12-02
- רҵ: ¼ÆËã»úÈí¼þ
8Â¥2014-03-22 09:46:19
hsfang
гæ (³õÈëÎÄ̳)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 84.3
- Ìû×Ó: 16
- ÔÚÏß: 4Сʱ
- ³æºÅ: 2161536
- ×¢²á: 2012-12-02
- רҵ: ¼ÆËã»úÈí¼þ
9Â¥2014-03-22 11:28:52













;
»Ø¸´´ËÂ¥