早教吧作业答案频道 -->其他-->
noip2010提高组初赛试题求解3.#include<iostream>usingnamespacestd;constintNUM=5;intr(intn){inti;if(n<=NUM)return0;for(i=1;i<=NUM;i++)if(r(n-i)<0)returni;return-1;}intmain(){intn;cin>>n;cout
题目详情
noip2010提高组初赛试题求解3. #include<iostream> using namespace std; const int NUM=5; int r(int n) { int i; if(n<=NUM) return 0; for(i=1;i<=NUM;i++) if( r(n-i)<0) return i; return -1; } int main() { int n; cin>>n; cout<<r(n)<<endl; return 0; } 输入: 16 输出:10______________ 4. #include<iostream> #include<cstring> using namespace std; const int SIZE=100; int n,m,r[SIZE]; bool map[SIZE][SIZE],found; bool successful() { int i; for(i=1;i<=n;i++) if(!map[r[i]][r[i%n+1]]) return false; return true; } void swap(int *a,int *b) { int t; t=*a; *a=*b; *b=t; } void perm(int left,int right) { int i; if(found) return ; if(left>right) { if(successful()) { for(i=1;i<=n;i++) cout<<r[i]<<' '; found=true; } return ; } for(i=left;i<=right;i++) { swap(r+left,r+i); perm(left+1,right); swap(r+left,r+i); } } int main() { int x,y,i; cin>>n>>m; memset(map,false,sizeof(map)); for(i=1;i<=m;i++) { cin>>x>>y; map[x][y]=true; map[y][x]=true; } for(i=1;i<=n;i++) r[i]=i; found=false; perm(1,n); if(!found) cout<<"Nosolution!"<<endl; return 0; } 输入: 9 12 1 2 2 3 3 4 4 5 5 6 6 1 1 7 2 7 3 8 4 8 5 9 6 9 输出:_________ 请问这两段程序分别为了实现什么
▼优质解答
答案和解析
求r(n)的值 要很好地解决这道题,首先我们要明确一个定理:r(n)无论在什么时候调用,其值不变。这样我们就可以反复调用我们之前算过的r(n)的结果。 注意到程序有一个判断n
看了 noip2010提高组初赛试...的网友还看了以下:
noip2010提高组初赛试题求解3.#include<iostream>usingnamespa 2020-05-17 …
北大POJ1005一直编译错误!代码如下:(在本机VS2010运行正常,交上去就编译错误:Memo 2020-06-06 …
C语言问题,急急急,求高人解释#include"stdafx.h"intmain(){intx,a 2020-07-16 …
#includestructstudent{longnum;floatscore;structst 2020-07-23 …
errorC2059:syntaxerror:'['#includeusingnamespaces 2020-07-23 …
功能:求1到10的阶乘的和。改错#include<stdio.h>intmain(){inti;in 2020-11-01 …
ACM的题目多项式求和1-1/2+1/3-1/4+1/5-1/6+...哪错了啊#include"s 2020-11-01 …
这是两个大数相加请帮忙改成两个大数相减#include#includeusingnamespaces 2020-11-23 …
一个正整数N,将其分解成若干个互不相同的正整数之和,使得这些互不相同的正整数之积最大.下面程序哪错? 2020-12-01 …