当前位置:网站首页>力扣练习——39 正方形数组的数目
力扣练习——39 正方形数组的数目
2022-08-02 04:18:00 【qq_43403657】
39 正方形数组的数目
1.问题描述
给定一个非负整数数组 A,如果该数组每对相邻元素之和是一个完全平方数,则称这一数组为正方形数组。
返回 A 的正方形排列的数目。两个排列 A1 和 A2 不同的充要条件是存在某个索引 i,使得 A1[i] != A2[i]。
示例 1:
输入:[1,17,8]
输出:2
解释:
[1,8,17] 和 [17,8,1] 都是有效的排列。
示例 2:
输入:[2,2,2]
输出:1
说明:若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。完全平方数是非负数。
2.输入说明
首先输入A数组的长度n,
然后输入n个整数,以空格分隔。
1 <= n<= 12
0 <= A[i] <= 1e9
3.输出说明
输出一个整数
4.范例
输入
3
1 17 8
输出
2
5.代码
#include <iostream>
#include <queue>
#include <cstdlib>
#include <string>
#include<set>
#include<algorithm>
using namespace std;
int ans;//结果
vector<int>t;
int used[12] = {
0 };
void dfs(vector<int> &nums);
int numSquarefulPerms(vector<int>& nums)
{
sort(nums.begin(), nums.end());//从小到大排序
dfs(nums);
return ans;
}
void dfs(vector<int>& nums) {
if (t.size() == nums.size()) {
ans++;
return;
}
for (int i = 0; i < nums.size(); i++) {
if (i > 0 && nums[i] == nums[i - 1] && !used[i - 1])continue;
if (!used[i]) {
if (t.size() == 0 || sqrt(nums[i] + t[t.size() - 1]) - int(sqrt(nums[i] + t[t.size() - 1])) == 0) {
used[i] = 1;
t.push_back(nums[i]);//弹入
dfs(nums);
used[i] = 0;//回溯
t.pop_back();//弹出
}
}
}
}
int main()
{
vector<int>nums;
int n,tmp;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> tmp;
nums.push_back(tmp);
}
int res = numSquarefulPerms(nums);
cout << res << endl;
return 0;
}
边栏推荐
- 吴恩达机器学习系列课程笔记——第六章:逻辑回归(Logistic Regression)
- 线代005
- Nexus 5 phone uses Nexmon tool to get CSI information
- How to decrypt worksheet protection in Excel
- 吴恩达机器学习系列课程笔记——第九章:神经网络的学习(Neural Networks: Learning)
- 最后写入胜利(丢弃并发写入)
- 【FreeRTOS】12 任务通知——更省资源的同步方式
- 被大厂强制毕业,两个月空窗期死背八股文,幸好上岸,不然房贷都还不上了
- 多主复制的适用场景(2)-需离线操作的客户端和协作编辑
- 详解CAN总线:什么是CAN总线?
猜你喜欢

A Practical Arrangement of Map GIS Development Matters (Part 1)

【STM32】 ADC模数转换

Research Notes (8) Deep Learning and Its Application in WiFi Human Perception (Part 2)

PyQt5_pyqtgraph鼠标在折线图上画方形

洛谷P2437蜜蜂路线

【FreeRTOS】12 任务通知——更省资源的同步方式

DOM系列之 click 延时解决方案

2022-08-01:以下go语言代码输出什么?A:panic;B:5;C:6;D:编译错误。 package main import ( “fmt“ ) func main() {

Visual SLAM Lecture Fourteen - Lecture 13 Practice: Designing a SLAM system (the most detailed code debugging and running steps)

【数字IC手撕代码】Verilog固定优先级仲裁器|题目|原理|设计|仿真
随机推荐
PyQt5_pyqtgraph鼠标在折线图上画直线
CaDDN paper reading of monocular 3D target detection
C - The Domino Effect(dfs+回溯)
How to save a section of pages in a PDF as a new PDF file
CODESYS指针型变量编程应用(配方)
8月1日“海豹数藏”将全网首发民族英雄林则徐《四行行书》数字藏品!
爬虫_爬取wasde月度供需平衡表(实例)
RuoYi-App启动教程
Deep Blue Academy - Visual SLAM Lecture Fourteen - Chapter 5 Homework
今天突然下雨
【数字IC手撕代码】Verilog固定优先级仲裁器|题目|原理|设计|仿真
论文速读:Homography Loss for Monocular 3D Object Detection
C# Thread IsBackground作用
吴恩达机器学习系列课程笔记——第六章:逻辑回归(Logistic Regression)
使用 Fastai 构建食物图像分类器
详解CAN总线:什么是CAN总线?
数据可视化之百变柱状图
从事功能测试1年,裸辞1个月,找不到工作的“我”怎么办?
跑通CogView教程
Camtasia 2022简体中文版屏幕录像和视频编辑软件