2 条题解
-
0
使用贪心策略,搜索方案 整体思路是搜索每一行的最小情况,从小到大搜索,则所输出的必定是最小情况 代码中一些变量含义 f:代表行列数 b[ ]:每行搜索时的已用数标记 c[ ][ ]:每列搜索已用数标记 d[ ]:每一行搜索结果 其余的都能在代码中轻易看出含义
using namespace std; bool b[100]; bool c[100][100]; int d[100]; int f; void print () { for (int i=0;i<f;i++) { printf ("%d ",d[i]); c[i][d[i]]=1; } printf ("\n"); } bool check (int i,int num) { bool p; if (b[i]==0&&c[num][i+1]==0) p=1; return p; } void search (int num) { for (int i=0;i<f;i++) if (check (i,num)==1) { d[num]=i+1; b[i]=1; if (num==f-1) { print (); break; } else search (num+1); b[i]=0; } } int main() { cin>>f; for (int i=0;i<f;i++) { search (0); for (int j=0;j<=f;j++) b[j]=0; } return 0; }
“关注bilibili虚拟主播不知源深喵,关注不知源深谢谢喵”
信息
- ID
- 449
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 67
- 已通过
- 22
- 上传者