1. 程式人生 > 遊戲攻略 >《怪物獵人物語2破滅之翼》戰鬥系統介紹及攻略

《怪物獵人物語2破滅之翼》戰鬥系統介紹及攻略

問題描述:
對於長度為5位的01串,每一位都可能是9或1,一共有32種可能。它們前幾個是:
00000
00001
00010
00100
請按從小到大的順序寫出這幾種01串。

輸出格式:
輸出32行,按從小到大的順序每一行一個長度為5的01串
解題思路
  • 0~32轉成二進位制輸出即得該題所求

  • 輸出32行,最後一行應該輸出31的5位二進位制: 1 1111 ,對應2^4 = 16 , 2^3 = 8 , 2^2 = 4 , 2^1 = 2 , 2^0 = 1

  • 31 % 32 /16= 1; 31 % 16 / 8= 1; 31 % 8 / 4 = 1; 31 % 4 / 2 = 1; 31% 2 = 1

    方法一
    程式碼實現

    暴力輸出

    #include<iostream>
    using namespace std;
    
    int main()
    {
    	for(int i = 0;i < 32; i++)
    	{
    		 cout<<i % 32 / 16<<i % 16 / 8<<i % 8 / 4<<i % 4 / 2<<i % 2<<endl;
    	}
    	return 0;
    }
    

    方法二:

    31 % 2 = 1 , 31 / 2 = 15
    15 % 2 = 1 , 15 / 2 = 7
    7  % 2 = 1 , 7  / 2 = 3
    3  % 2 = 1 , 1  / 2 = 0
    
#include<iostream>
using namespace std;

int main()
{
	for(int i = 0;i < 32;i++)
	{
		int a[5]={0}; //i = 0 時;輸出 0 0000
		int n = i;
		int num = 4;

		while(n >= 1) 
		{
			a[num--] = n % 2;
			n /= 2;
		}
		for(int j = 0;j < 5;j++)
		{
			cout<<a[j]; //遍歷輸出
		}
		cout<<endl;
	}
}