当前位置: 首页 > wzjs >正文

乌鲁木齐网站开发价格俄罗斯引擎搜索

乌鲁木齐网站开发价格,俄罗斯引擎搜索,wordpress教程登陆,深圳网站建设好吗L2-052 吉利矩阵 - 团体程序设计天梯赛-练习集 所有元素为非负整数,且各行各列的元素和都等于 7 的 33 方阵称为“吉利矩阵”,因为这样的矩阵一共有 666 种。 本题就请你统计一下,把 7 换成任何一个 [2,9] 区间内的正整数 L,把矩…

L2-052 吉利矩阵 - 团体程序设计天梯赛-练习集

所有元素为非负整数,且各行各列的元素和都等于 7 的 3×3 方阵称为“吉利矩阵”,因为这样的矩阵一共有 666 种。
本题就请你统计一下,把 7 换成任何一个 [2,9] 区间内的正整数 L,把矩阵阶数换成任何一个 [2,4] 区间内的正整数 N,满足条件“所有元素为非负整数,且各行各列的元素和都等于 L”的 N×N 方阵一共有多少种?

输入格式:

输入在一行中给出 2 个正整数 L 和 N,意义如题面所述。数字间以空格分隔。

输出格式:

在一行中输出满足题目要求条件的方阵的个数。

输入样例:

7 3

输出样例:

666

思路:

剪枝只对完成的行列进行判断,超时两个点
代码:
 

#include <bits/stdc++.h>
using namespace std;
int a[10][10];
int rows[10], ranks[10];
int L, N, ans;void dfs(int x, int y) 
{if (y > N)// 走完一行 { if (rows[x] != L)return;x++;y = 1;}if (x > N) // 填充完整个矩阵 {for (int i = 1; i <= N; i++) {if (ranks[i] != L)return;if(rows[i] != L)return;}ans++;return;}for (int i = 0; i <= L; i++) {a[x][y] = i;rows[x] += i;ranks[y] += i;dfs(x, y + 1);rows[x] -= i;ranks[y] -= i;a[x][y] = 0;}
}int main(void) 
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> L >> N;dfs(1, 1);cout << ans;return 0;
}

思路:
优化剪枝,对于中间过程,凡是超过L的都要回溯,这里利用两个数组,存行和列的值。超时一个点。

代码:
 

#include <bits/stdc++.h>
using namespace std;
int a[10][10];
int rows[10], ranks[10];
int L, N, ans;void dfs(int x, int y) 
{if(rows[x] > L || ranks[y] > L)return; if (y > N)//走完一行 { if (rows[x] != L)return;x++;y = 1;}if (x > N)// 填充完整个矩阵 { for (int i = 1; i <= N; i++) {if (ranks[i] != L)return;}ans++;return;}for (int i = 0; i <= L; i++) {a[x][y] = i;rows[x] += i;ranks[y] += i;dfs(x, y + 1);rows[x] -= i;ranks[y] -= i;a[x][y] = 0;}
}int main(void) {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> L >> N;dfs(1, 1);cout << ans;return 0;
}

思路:
完全优化,对于行最后一个位置,不用进行枚举,直接求L-(N-1)选的数字和。

代码:

#include <bits/stdc++.h>
using namespace std;int rows[10], ranks[10];
int L, N, ans;void dfs(int x, int y) 
{if (x > N)//全部走完 {ans++;return;}if (y > N) //走完一行 {if (rows[x] != L) return;x++;y = 1; }if (rows[x] > L || ranks[y] > L)//剪枝 return;if (y == N)//每行最后一个格子 {int remain = L - rows[x];if (remain < 0 || ranks[y] + remain > L) return;rows[x] += remain;ranks[y] += remain;dfs(x, y + 1);rows[x] -= remain;ranks[y] -= remain;} else {int max_i = min(L - rows[x], L - ranks[y]);//取最小 for (int i = 0; i <= max_i; i++) {rows[x] += i;ranks[y] += i;dfs(x, y + 1);rows[x] -= i;ranks[y] -= i;}}
}
int main() 
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> L >> N;dfs(1, 1);cout << ans;return 0;
}


http://www.dtcms.com/wzjs/151541.html

相关文章:

  • 平度城乡建设局网站关键词排名方法
  • 福州网站建设多少钱外链网
  • 企业网站优化的原则属性词 关键词 核心词
  • 如何给网站写文章汕头网站关键词推广
  • 网站免费正能量软件下载发软文是什么意思
  • 杭州做外贸网站湖南企业seo优化推荐
  • server2008做DNS与网站如何能查到百度搜索排名
  • 清新太和做网站百度推广一年大概多少钱
  • 淘宝做的网站靠谱吗seo网络运营
  • 微信公众号网页怎么制作五种关键词优化工具
  • 石大网页设计与网站建设客观题宁波seo哪家好
  • 瑞安市聚齐网络科技有限公司seo技术助理
  • 网页制作与网站建设 在线作业seo搜索排名
  • 镇政府网站平台建设方案百度seo价格
  • 红酒网站建设方案范本北京网站seo招聘
  • wordpress 插件 块上海seo公司哪家好
  • 北海教网站建设百度免费注册
  • 来个可以做渗透的网站最新经济新闻
  • 泰州seo顾问服务seo网站排名
  • 如何提升wordpress的打开速度淄博网站seo
  • 网站认证费怎么做分录火星时代教育培训机构学费多少
  • 网站制作怎么做下拉菜单汽车网络营销策划方案
  • 武汉网站制作公司石家庄seo外包公司
  • 分类网站模板单词优化和整站优化
  • 做海外正品代购的十个网站_百度竞价怎么做
  • 日语网站建设需要注意什么国际新闻最新消息十条摘抄
  • 文字域名可以做网站好的推广方式
  • 福州网站优化公司网站建设公司业务
  • 用div做网站中间部分网络推广公司是干什么
  • 公司注册地址规定网站优化公司