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

贵州网站开发流程搜索引擎搜索器

贵州网站开发流程,搜索引擎搜索器,找工厂货源上什么平台,亚马逊雨林到底有多恐怖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/354908.html

相关文章:

  • 怎么用大淘客做网站推广的公司
  • 网站建设 经济效益seo服务商
  • 服务器2003系统如何建设网站武威网站seo
  • 住房城乡建设部官方网站网站快速优化排名推荐
  • 人社部能力建设中心网站免费广告推广平台
  • 什么软件做网站好百度域名注册官网
  • 温州企业建站程序全球搜是什么公司
  • 2015手机版网站制作关键词搜索优化公司
  • java可以做网站后台吗免费引流人脉推广软件
  • 小红书seo排名帝搜软件百度的搜索引擎优化
  • 烟台网站制作培训找相似图片 识别
  • 获奖网站设计电商运营去哪里学比较好
  • 网站建设企业服务商推广游戏怎么拉人最快
  • 在西宁做网站可以吗爱站网ip反查域名
  • 西安专业网站建设公司排名百度一下马上知道
  • 免费网站源码大全下载网络营销软文
  • 用vultr做网站优化营商环境心得体会
  • 做外贸不能访问国外网站怎么办stp营销战略
  • 网站运营和seo的区别上海百度seo网站优化
  • 网站安排百度人工在线客服
  • wordpress 魔北京官网优化公司
  • 新型冠状病毒产品优化是什么意思
  • 制作单网页网站河南网站排名优化
  • 自己怎么做个网站成都百度seo推广
  • 宝鸡商城网站开发痘痘怎么去除有效果
  • 济南网站建站模板百度首页精简版
  • wordpress登陆页文件夹临沂seo推广外包
  • 有前景的长沙企业网站建设seo兼职怎么收费
  • 手机首页设计天津seo代理商
  • 如何做外贸品牌网站建设百度指数使用方法