2013省赛----带分数(对1~9的数字全排列)

2024-02-18 09:08

本文主要是介绍2013省赛----带分数(对1~9的数字全排列),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import java.util.Scanner;public class TestOne {
//用到全排列static int ans; //得到数字N的可能组合数private static int N; //要得到的数字Npublic static void main(String[] args) {Scanner sc = new Scanner(System.in);N = sc.nextInt();//输入数字int[] arr = {1,2,3,4,5,6,7,8,9};//对该数组进行全排列f(arr,0);System.out.println(ans);}/*(1) 确认某一排列的第k位* */private static void f(int[] arr, int k) {//1.全部位置都已确认if(k==9) {check(arr);//验证该排列是否通过+、	\组合,得到数字Nreturn;}//2.选定第k位的元素for(int i=k;i<arr.length;i++) {//第k位可取的元素为 arr数组中 :第k到arr.length个元素//将第i位作为第k位元素。int t = arr[i];arr[i] = arr[k];arr[k] = t;//3.移交到下一层,去确认第k+1位f(arr,k+1);//4.回溯。换回来,便于后面的位置元素的确认t=arr[i];arr[i] = arr[k];arr[k] = t;}//for}/*(2)枚举 + 和\ 的位置* */private static void check(int[] arr) {//1.由于\在+的后面。所以+前面的数字最多有7位。for(int i=1;i<=7;i++) {//+前面可能的数字位数//2.获取+前面的数字,将这些数字转化为整数(0表示的是开始下标,i表示的是数字个数)int num1 = toInt(arr,0,i); //3.如果+前面的整数已经超过N,就没必要验算了if(num1>=N) {continue;}//4.计算+和\之间的数字个数(+和/中间最多有7位。 +前面至少有1位,\后面至少有1位)for(int j=1;j<=8-i;j++) {//4.1 将+和\之间的数字转化为整数(i表示开始下标,j表示数字个数)int num2 = toInt(arr, i, j);//4.2 获取\后面的数字(共9位数- 加号前的数字个数i - 加号和除号之间的数字位数j)int num3 = toInt(arr,i+j,9-i-j);//4.3 判断num1+num2/num3 = N 是否成立if((num2%num3==0) && (num1+num2/num3==N)) {ans++;}}//for}//for}/** (3)将一串数字转化为整数*   arr: 存放一串数字*   pos:开始下标*   len:一串数字的长度* */private static int toInt(int[] arr, int pos, int len) {int t = 1;int result=0;for(int i=pos+len-1;i>=pos;i--) {result+=arr[i]*t;t=t*10;}return result;}}

这篇关于2013省赛----带分数(对1~9的数字全排列)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/720685

相关文章

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同地区不同语言的客服外包解决方案,除了人力,还有软件系统。 软件系统主要是提供了客服跟客人的渠道沟通和工单管理,内部管理跟甲方的合同对接,绩效评估,BI数据透视。 客服跟客人

回溯——9.全排列

力扣题目链接 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 解题思路 问题建模:题目要求给出一个数组的所有排列组合,属于典型的全排列问题,这可以用回溯法来解决。回溯法通过递归的方式,依次将数组中的每个元素放入排列中,直到生成

NC 把数字翻译成字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。 现在给一串数字,返回有多少种可能的译码结果 import java.u

34465A-61/2 数字万用表(六位半)

34465A-61/2 数字万用表(六位半) 文章目录 34465A-61/2 数字万用表(六位半)前言一、测DC/AC电压二、测DC/AC电流四、测电阻五、测电容六、测二极管七、保存截图流程 前言 1、6位半数字万用表通常具有200,000个计数器,可以显示最大为199999的数值。相比普通数字万用表,6位半万用表具有更高的测量分辨率和更高的测量准确度,适用于精度比较高的测

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

两个长数字相加

1.编程题目 题目:要实现两个百位长的数字直接相加 分析:因为数字太长所以无法直接相加,所以采用按位相加,然后组装的方式。(注意进位) 2.编程实现 package com.sino.daily.code_2019_6_29;import org.apache.commons.lang3.StringUtils;/*** create by 2019-06-29 19:03** @autho