求网格中的黑点分布
来源:互联网 发布:淘宝专业打假 编辑:程序博客网 时间:2024/04/27 19:27
#include <stdio.h>
#if 1
#define ROWS 6
#define COLS 7
int iPointsR[ROWS] = {2,0,4,3,4,0};//
int iPointsC[COLS] = {4,1,2,2,1,2,1};
int iCount, iFound;
int iSumR[ROWS], iSumC[COLS], Grid[ROWS][COLS];
int Set(int iRowNo)
{
if (iRowNo == ROWS)
{
for (int iColNo = 0; iColNo < COLS && iSumC[iColNo] == iPointsC[iColNo]; iColNo++)
if (iColNo == COLS -1)
{
printf("\nNo.%d:\n", ++iCount);
for (int i = 0; i < ROWS; i++)
for (int j = 0; j < COLS; j++)
printf("%d%c", Grid[i][j], (j+1)%COLS ? ' ' : '\n');
iFound = 1;
}
}
else if (iRowNo < ROWS)
{
for (int iColNo = 0; iColNo < COLS; iColNo++)
{
if (iPointsR[iRowNo] == 0)
{
Set(iRowNo+ 1);
}
else if (Grid[iRowNo][iColNo] == 0)
{
Grid[iRowNo][iColNo] = 1;
iSumR[iRowNo]++;
iSumC[iColNo]++;
if (iSumR[iRowNo] < iPointsR[iRowNo] && iSumC[iColNo] <= iPointsC[iColNo])
Set(iRowNo);
else if(iSumR[iRowNo] == iPointsR[iRowNo] && iRowNo < ROWS)
Set(iRowNo+1);
Grid[iRowNo][iColNo] = 0;
iSumR[iRowNo]--;
iSumC[iColNo]--;
}
}
}
return iFound;
}
int main(int argc, char* argv[])
{
if (!Set(0))printf("Failure!\n");
}
#else
#define ROWS 6
#define COLS 7
int iPointsR[ROWS] = {2, 0, 4, 3, 4, 0}; // å„行黑点数和的情况
int iPointsC[COLS] = {4, 1, 2, 2, 1, 2, 1}; // å„列黑点数和的情况
int iCount, iFound = 0;
int iSumR[ROWS], iSumC[COLS], Grid[ROWS][COLS];
int Set(int iRowNo,int iParentColNo) {
if(iRowNo == ROWS) {
for(int iColNo=0; iColNo < COLS && iSumC[iColNo]==iPointsC[iColNo]; iColNo++)
if(iColNo == COLS-1) {
printf("\nNo.%d:\n", ++iCount);
for(int i=0; i < ROWS; i++)
for(int j=0; j < COLS; j++)
printf("%d%c", Grid[i][j], (j+1) % COLS ? ' ' : '\n');
iFound = 1; // iFound = 1
}
} else {
int iColNo = 0;
if(iParentColNo != -1) iColNo = iParentColNo + 1;
for(; iColNo < COLS; iColNo++) {
if(iPointsR[iRowNo] == 0 && iColNo == 0) {
Set(iRowNo + 1,-1);
}else if(Grid[iRowNo][iColNo]==0) {
Grid[iRowNo][iColNo] = 1;
iSumR[iRowNo]++; iSumC[iColNo]++;
if(iSumR[iRowNo]<iPointsR[iRowNo] && iSumC[iColNo]<=iPointsC[iColNo] && iColNo != COLS - 1)
Set(iRowNo,iColNo);
else if(iSumR[iRowNo]==iPointsR[iRowNo] && iRowNo < ROWS)
Set(iRowNo + 1,-1);
Grid[iRowNo][iColNo] = 0;
iSumR[iRowNo]--;
iSumC[iColNo]--;
}
}
}
return iFound; // 用于判æ–是å¦æœ‰è§£
}
int main(int argc, char* argv[]) {
if(!Set(0,-1))
printf("Failure!");
//system("pause");
}
#endif
0 0
- 求网格中的黑点分布
- 求网格中的黑点分布C程序注解
- 求网格中的黑点分布(求帮助,程序只能输出一个解)
- 城市行--求网格中的可达路径数
- 一道C语言面试题——网格中黑点的位置
- 数的几何-网格求积分法初阶
- 取网格中的值
- 网格中的手写分页
- CSS3中的网格
- bootstrap中的网格系统
- C++中的内存分布
- C++中的内存分布
- C++中的内存分布
- 应用程序中的地址分布
- C++中的内存分布
- C++中的内存分布
- JAVA中的内存分布
- 概率论中的常见分布
- Netty版本升级血泪史之线程篇
- 数学专题收集
- Centos 安装 codeblocks 及ssh tunneling 显示
- 二叉树的计数
- 视图操作
- 求网格中的黑点分布
- kaggle数据挖掘——以Titanic为例介绍处理数据大致步骤
- LeetCode(213) House Robber II
- 【技巧】——将Chrome浏览器变为文本编辑器
- HDU5317.RGCDQ
- c++ 11 声明
- Linked List Cycle
- iOS9 CASpringAnimation 弹簧动画详解
- Ubuntu循环登录问题解决方案