我是靠谱客的博主 谦让方盒,最近开发中收集的这篇文章主要介绍“暴力”枚举(穷举),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

枚举法最成功的例子:1、八皇后问题

#include <stdio.h>

int Queen8()
{
   int count = 0;
   for(int q1=0;q1<8;q1++)
   {
      for(int q2=0;q2<8;q2++)
      {
         if(q1==q2 || q1-1==q2 || q1+1==q2)
         {
            continue;
         }
	 for(int q3=0;q3<8;q3++)
	 {
	    if(q1==q3 || q1-2==q3 || q1+2==q3 ||
	       q2==q3 || q2-1==q3 || q2+1==q3)
	    {
	       continue;
	    }
	    for(int q4=0;q4<8;q4++)
	    {
	       if(q1==q4 || q1-3==q4 || q1+3==q4 ||
		  q2==q4 || q2-2==q4 || q2+2==q4 ||
		  q3==q4 || q3-1==q4 || q3+1==q4)
	       {
		  continue;
	       }
	       for(int q5=0;q5<8;q5++)
	       {
	          if(q1==q5 || q1-4==q5 || q1+4==q5 ||
		     q2==q5 || q2-3==q5 || q2+3==q5 ||
		     q3==q5 || q3-2==q5 || q3+2==q5 ||
		     q4==q5 || q4-1==q5 || q4+1==q5)
		     {
		        continue;
		     }
		     for(int q6=0;q6<8;q6++)
		     {
		        if(q1==q6 || q1-5==q6 || q1+5==q6 ||
			   q2==q6 || q2-4==q6 || q2+4==q6 ||
			   q3==q6 || q3-3==q6 || q3+3==q6 ||
			   q4==q6 || q4-2==q6 || q4+2==q6 ||
			   q5==q6 || q5-1==q6 || q5+1==q6)
			{
			   continue;
		        }
			for(int q7=0;q7<8;q7++)
			{
			   if(q1==q7 || q1-6==q7 || q1+6==q7 ||
			      q2==q7 || q2-5==q7 || q2+5==q7 ||
			      q3==q7 || q3-4==q7 || q3+4==q7 ||
			      q4==q7 || q4-3==q7 || q4+3==q7 ||
			      q5==q7 || q5-2==q7 || q5+2==q7 ||
			      q6==q7 || q6-1==q7 || q6+1==q7)
			   {
			      continue;
			   }
			   for(int q8=0;q8<8;q8++)
			   {
			      if(q1==q8 || q1-7==q8 || q1+7==q8 ||
				 q2==q8 || q2-6==q8 || q2+6==q8 ||
				 q3==q8 || q3-5==q8 || q3+5==q8 ||
			         q4==q8 || q4-4==q8 || q4+4==q8 ||
				 q5==q8 || q5-3==q8 || q5+3==q8 ||
				 q6==q8 || q6-2==q8 || q6+2==q8 ||
			         q7==q8 || q7-1==q8 || q7+1==q8)
			      {
				 continue;
			      }
			      printf("%d,%d,%d,%d,%d,%d,%d,%dn",q1,q2,q3,q4,q5,q6,q7,q8);
			      count++;
			   }
			}
		     }
		  }
	       }
	    }
         }
      }
      return count;
}

int main()
{
   int count;
   printf("%dn",Queen());
    
   return 0;
} 

2、硬币分配问题

#include<stdio.h>

int Money(int n)
{
        int count = 0;

	for(int m1 = 0;m1 < n/15;m1++)
	{
		for(int m2 = 0;m2 < n/23;m2++)
		{
			if(m1*15 + m2*23 > n)
			{
				continue;
			}
			for(int m3 = 0;m3 < n/29;m3++)
			{
				if(m1*15 + m2*23 + m3*29 > n)
				{
					continue;
				}
				for(int m4 = 0;m4 < n/41;m4++)
				{
					if(m1*15 + m2*23 + m3*29 + m4*41 > n)
					{
						continue;
					}
					for(int m5 = 0;m5 < n/67;m5++)
					{
						if(m1*15 + m2*23 + m3*29 + m4*41 + m5*67 > n)
						{
							continue;
						}
						count++;
						printf("第%d种:%d,%d,%d,%d,%dn",count,m1,m2,m3,m4,m5);
					}
				}
			}
		}
	}
	return count;
}

int main()
{
	printf("%dn",Money(100));
	
	return 0;
}
































最后

以上就是谦让方盒为你收集整理的“暴力”枚举(穷举)的全部内容,希望文章能够帮你解决“暴力”枚举(穷举)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部