1 条题解

  • 0
    @ 2024-12-24 9:49:24

    C++ :

    #include <iostream>
    
    using namespace std;
    
    bool chess[10][10];
    bool col[10];
    int status;
    int n, k;
    
    int DFS(int row, int num)
    {
    	int i;
    	if (num == k)
    	{
    		status++;
    		return 0;
    	}
    	if (row > n)
    		return 0;
    	for (i = 1; i <= n; i++)
    	{
    		if (chess[row][i] && !col[i]){
    			col[i] = true;
    			DFS(row + 1, num + 1);
    			col[i] = false;
    		}
    	}
    	DFS(row + 1, num);
    	return 0;
    }
    
    
    int main()
    {
    	int i, j;
    	char temp;
    	while (cin >> n >> k)
    	{
    		if (n == -1 && k == -1)
    			break;
    		for (i = 0; i < 10; i++)
    		for (j = 0; j < 10; j++)
    			chess[i][j] = false;
    		for (i = 0; i < 10; i++)
    			col[i] = false;
    		status = 0;
    		for (i = 1; i <= n; i++)
    		  for (j = 1; j <=n; j++)
    		   {
    			cin >> temp;
    			if (temp == '#')
    			{
    				chess[i][j] = true;
    			}
    		}
    		DFS(1, 0);
    		cout << status << endl;
    	}
    
    	return 0;
    }
    
    • 1

    信息

    ID
    858
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者