........

//蘋果
int KindNumOfApple(unsigned int m,unsigned int n)
{
   
   if(m==1||n==1)
	   return 1;
   if(m<n)
	   return m;
   if(m>n)
	   return KindNumOfApple(m,n-1)+KindNumOfApple(m-n,n);
   if(m==n)
	   return 1+KindNumOfApple(m,n-1);

}
//及格分
<pre name="code" class="cpp">int PassScore( int *InPut)
{
  assert(InPut!=NULL);
  int i,j,tmp;
  int Score;
  for(i=0;i<9;i++)
	{  for(j=0;j<9-i;j++)
	  {
	    if(InPut[j]>InPut[j+1])
		{
			tmp=InPut[j];
		   InPut[j]=InPut[j+1];
		   InPut[j+1]=tmp;
		}
	  }
  }
  if(*InPut>60)
	  return 60;
  Score=InPut[4]/10*10;
  return Score;
}
//字符串壓縮

<pre name="code" class="cpp">void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr)
{
  assert((pInputStr!=NULL)&&(lInputLen>0));
 // int strCount[26]={0};
  int i,j=0,tmp=0;
  for(i=0;i<lInputLen;i++)
  {
	  tmp=1;
    while(pInputStr[i]==pInputStr[i+1])
	{
	   tmp++;
	   i++;
	}
	if(tmp>1)
	{
	pOutputStr[j++]=tmp+'0';
	}
	pOutputStr[j++]=pInputStr[i];
  }
  pOutputStr[j]='\0';
}
//約瑟夫

<pre name="code" class="cpp">typedef struct _Node
{
   int  key;
   struct _Node *pNext;
}Node;
typedef struct _Node* ptrNode;

struct _Node* CreatLink(int n,Node* pHead)
{
  struct _Node* tmp=(ptrNode)malloc(sizeof(Node));
  struct _Node* pnext;
  int i;
  if(pHead==NULL)
  {
     ptrNode tmp=(ptrNode)malloc(sizeof(Node));
	 tmp->key=1;
	 tmp->pNext=NULL;
	 pHead=tmp;
	 pnext=tmp;
  }
  for( i=2;i<=n;i++)
  {
     ptrNode tmp=(ptrNode)malloc(sizeof(Node));
	 tmp->key=i;
	 tmp->pNext=NULL;
	 pnext->pNext=tmp;
	 pnext=pnext->pNext;
  }
  pnext->pNext=pHead;
 
  return pHead;


}

int theEndNum(int n,int m,int k)
{
	 Node* Head=NULL;
	 Node* ptmp=Head;
	 Node* pdel;
	 int temp;
	Head=CreatLink(n,Head);
	 
	while(k--)
	{
	   ptmp=ptmp->pNext;
	}
	
	while(ptmp->pNext!=ptmp)
	{  temp=m;
	   while(--temp)
	   {
	     ptmp=ptmp->pNext;
	   }
	   pdel=ptmp->pNext;
	   ptmp->key=ptmp->pNext->key;
	   ptmp->pNext=ptmp->pNext->pNext;
	   free(pdel);
	}
	return ptmp->key;
}

//和尚挑水

<pre name="code" class="cpp">#include<iostream>  
using namespace std;  
  
const int SETED=100;  
  
// 每行代表一個和尚  
// ready[i][j]=1表示第i個和尚第j天有空。  
int ready[7][7]={  
  
    0, 1, 0, 1, 0, 0, 0,   
    1, 0, 0, 0, 0, 1, 0,   
    0, 0, 1, 0, 0, 0, 1,   
    0, 0, 0, 0, 1, 0, 0,   
    1, 0, 0, 1, 0, 1, 0,   
    0, 1, 0, 0, 1, 0, 0,   
    0, 0, 1, 0, 0, 1, 1   
};  
  
int res[7][7]={0};  
  
void show_result(){   
    static int count=1;  
    printf("第%d種分配方案:\n",count);  
    ++count;  
    for(int i=0;i<7;++i){  
        for(int j=0;j<7;++j){  
            if(ready[i][j]>10){  
                cout<<"1 ";  
            }else{  
                cout<<0<<" ";  
            }  
        }  
        cout<<endl;  
    }  
    cout<<endl<<endl;  
}  
  
//衝突檢測函數,每個和尚只需要判斷其選擇的日期內沒有其他和尚就行。  
//即位置上方沒有衝突  
int conflict(int row, int column){  
  
    for(int i=1;i<7;++i){  
        //上  
        if(row-i>=0 &&ready[row-i][column]>10)  
            return 1;  
    }  
    return 0;  
}  
  
void result(int row){  
    for(int column=0;column<7;++column){  
  
        if( 1!=ready[row][column] )  
            continue;  
          
        ready[row][column]+=SETED;  
        if(!conflict(row,column)){  
            if(row<6)  
                result(row+1);  
            else  
                show_result();  
        }  
        ready[row][column]-=SETED;//回溯的本意  
  
    }  
}  
  
int main(){  
    result(0);  
    return 0;  
}  




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章