zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    STL之vector
    STL之string
    STL之map
    STL之queue
    STL之set
    Ubuntu 12.04 输入法托盘图标消失
    Hibernate:No row with the given identifier exists
    Java 数组
    Oracle 简单备份 批处理(BAT)
    Oracle DataBase Link
  • 原文地址:https://www.cnblogs.com/yunyouhua/p/6118456.html
Copyright © 2011-2022 走看看