• 6.2分鱼问题两种解法


    // 分鱼问题,从E开始递推,使用for循环简化中间计算,优化枚举 
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	int num[5];
    	for (num[4] = 16; ;num[4] += 20)
    	{
    		int i = 3;
    		for (; i >= 1; --i)
    		{
    			num[i] = num[i+1] / 4 * 5 + 1;
    			if (num[i] % 4 != 0)
    				break;
    		}
    		if (i == 0)		// 已找到答案 
    			break;
    	}
    	num[0] = num[1] / 4 * 5 + 1;
    	for (int i = 0; i < 5; ++i)
    		cout << num[i] << ' ';
    	return 0;
    }

      

    // 分鱼问题,从E开始递推
    #include <iostream>
    using namespace std;
    
    int main()
    {
        // 定义数组 
    	int num[5];
    	// 从6开始枚举num[4] 
    	for (num[4] = 6; ; num[4] += 5)
    	{
    		if (num[4] % 4 != 0)
    		   continue;
    		num[3] = num[4] / 4 * 5 + 1;
    		if (num[3] % 4 != 0)
    		   continue;
    		num[2] = num[3] / 4 * 5 + 1;
    		if (num[2] % 4 != 0)
    		   continue;
    		num[1] = num[2] / 4 * 5 + 1;
    		if (num[1] % 4 != 0)
    		   continue;
    		num[0] = num[1] / 4 * 5 + 1;
    		break;
    	}
    	// 输出答案 
    	for (int i = 0; i < 5; ++i)
    		cout << num[i] << ' ';
    	return 0;
    }
    

      

    // 分鱼问题,从A开始递推,使用for循环简化中间计算,优化枚举 
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	int num[5];
    	for (num[0] = 16; ; num[0] += 5)
    	{
    		int i = 0;
    		for (; i < 4; ++i)
    		{
    			num[i+1] = num[i] / 5 * 4;		// 整数除法,可以不减1就直接除以5 
    			if (num[i+1] % 5 != 1)
    				break;
    		}
    		if (i >= 4)		// 已找到答案
    			break; 
    	}
    	for (int i = 0; i < 5; ++i)
    		cout << num[i] << ' ';
    	return 0;
    }
    

      

  • 相关阅读:
    PL/SQL编程基本概念
    oracle基本笔记整理及案例分析2
    oracle基本笔记整理及案例分析2
    oracle基本笔记整理及案例分析2
    oracle基本笔记整理及案例分析1
    oracle基本笔记整理及案例分析1
    oracle基本笔记整理及案例分析1
    oracle笔记整理2
    oracle笔记整理2
    oracle笔记整理2
  • 原文地址:https://www.cnblogs.com/yunyouhua/p/6118456.html
Copyright © 2020-2023  润新知