算法第一次实验 NPC问题

#include "iostream"   
#define max 100   
using namespace std;   
bool unguarded(int A[],int m)   
{   
    int n;    
    for(n=0;n<m;n++)  
    {    
        if((A[n]==A[m])||((A[n]+n)==(A[m]+m))||((A[n]-n)==(A[m]-m))||((n -A[n])==(m-A[m])))   
   
        return false;    
    }   
    return true;   
}   
int main()   
{    
    int n,i,A[max],s=1;   
    cout<<"请输入皇后的个数"<<endl;   
    cin>>n;    
    if((n<=3)||(n>=100))   
    cout<<"请不要输入1、2、3或者大于100的数!"<<endl; 
    else  
    {    
        for(i=0;i<n;i++) A[i]=0;   
        i=0;   
        while(i>=0)  
        {      
            if(A[i]<=n-1)   
            { 
                if(!unguarded(A,i)) A[i]++;
                else   
                {    
                    if(i<n-1) i++;   
                    else       
                    {     
                        cout<<"第"<<s<<"个:"<<endl;   
//num=num+1;
                        for(int j=0;j<n;j++)  
                        {  
                              
                            for(int d=0;d<n;d++){   
                            if(d!=A[j])        
                            cout<<"X"<<' ';         
                            else           
                            cout<<"Q"<<' ';  
                            }         
                            cout<<endl;  
                        }         
                        s+=1;   

                        if(s>3)  
                        {   
                            break;  
                        }  
                        else{ 

                        A[n-1]++;     
                        }  
                    }  
                }  
            }       
            else {     
            A[i]=0; i--;        
            if(i>=0) A[i]++;}
        }  
    }  

 return 0;   

}   



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
贪心算法是一种在每一步选择中都希望能找到局部最优解的算法。它通过贪心的选择策略,即每次选择当前情况下看似最优的解决方案,来逐渐构建整体的最优解。贪心算法在解决NPC问题时,可以具有高效性和简洁性的优势。 在NPC问题中,贪心算法可以用来解决各种优化问题,如最短路径问题、最小生成树问题和任务调度问题等。在涉及到路径问题时,可以通过每一步选择最短距离的方式来找到最短路径。而在最小生成树问题中,可以通过每次选择权重最小的边来构建整体的最小生成树。 举例来说,假设有一组任务需要安排在有限的资源下完成,每个任务有不同的时长和截止时间。这时可以使用贪心算法来解决任务调度问题。一种贪心的策略是选择当前剩余最短时长的任务进行安排,以尽量减少任务延迟。每次都选择剩余时长最短的任务,直到所有任务都安排完毕。 贪心算法在解决NPC问题时并不一定能够得到全局最优解,但在一些问题中可以得到接近最优解的解决方案。此外,贪心算法通常具有计算复杂度较低的优势,能够快速求解问题,尤其在问题规模较小或具有特定特征时,贪心算法可以是一个简单而有效的解决方法。 总之,贪心算法通过局部最优选择来逐步构建整体最优解,在解决NPC问题中可以得到不错的解决方案,并具有高效性和简洁性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值