POJ 3187 Backward Digit Sums
来源:互联网 发布:阿里云分布式文件系统 编辑:程序博客网 时间:2024/04/30 20:51
//============================================================================
// Name : hello.cpp
// Author : key
// Version : 8
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <string>
#include <algorithm>
using namespace std;
#define NUM_INF 0x7FFFFFFF
#define MAX_N 15
int n; //共n 个数
int sum;
int rcd[MAX_N]; //记录每个位置填的数
int ans[MAX_N];
int used[MAX_N]; //标记数是否用过
int num[MAX_N]; //存放输入的n 个数
bool flat=0;
int jud()
{
int i,j;
for(i=0;i<n;i++)
ans[i] = rcd[i];
for(i=n-1;i>0;i--)
{
for(j=0;j<i;j++)
{
ans[j] = ans[j]+ans[j+1];
}
}
return ans[0];
}
void full_permutation(int l){
if(flat) return;
int i;
if (l == n)
{
if(jud()==sum)
{
flat=1;
for (i=0; i<n; i++){
printf("%d", rcd[i]);
if (i < n-1) printf(" ");
}
printf("\n");
return ;
}
}
for (i=0; i<n; i++) //枚举所有的数(n 个), 循环从开始
if (!used[i]){ //若num[i]没有使用过, 则标记为已使用
used[i] = 1; rcd[l] = num[i];//在l 位置放上该数
full_permutation(l+1); //填下一个位置
used[i] = 0; //清标记
}
}
int main()
{
int i;
while(scanf("%d%d",&n,&sum)!=EOF)
{
for(i=0;i<n;i++)
num[i] = i+1;
memset(used,0,sizeof(used));
flat = 0;
full_permutation(0);
}
return 0;
}
// Name : hello.cpp
// Author : key
// Version : 8
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <string>
#include <algorithm>
using namespace std;
#define NUM_INF 0x7FFFFFFF
#define MAX_N 15
int n; //共n 个数
int sum;
int rcd[MAX_N]; //记录每个位置填的数
int ans[MAX_N];
int used[MAX_N]; //标记数是否用过
int num[MAX_N]; //存放输入的n 个数
bool flat=0;
int jud()
{
int i,j;
for(i=0;i<n;i++)
ans[i] = rcd[i];
for(i=n-1;i>0;i--)
{
for(j=0;j<i;j++)
{
ans[j] = ans[j]+ans[j+1];
}
}
return ans[0];
}
void full_permutation(int l){
if(flat) return;
int i;
if (l == n)
{
if(jud()==sum)
{
flat=1;
for (i=0; i<n; i++){
printf("%d", rcd[i]);
if (i < n-1) printf(" ");
}
printf("\n");
return ;
}
}
for (i=0; i<n; i++) //枚举所有的数(n 个), 循环从开始
if (!used[i]){ //若num[i]没有使用过, 则标记为已使用
used[i] = 1; rcd[l] = num[i];//在l 位置放上该数
full_permutation(l+1); //填下一个位置
used[i] = 0; //清标记
}
}
int main()
{
int i;
while(scanf("%d%d",&n,&sum)!=EOF)
{
for(i=0;i<n;i++)
num[i] = i+1;
memset(used,0,sizeof(used));
flat = 0;
full_permutation(0);
}
return 0;
}
- POJ 3187 Backward Digit Sums
- POJ 3187 Backward Digit Sums
- POJ 3187 Backward Digit Sums
- poj 3187 Backward Digit Sums
- POJ-3187-Backward Digit Sums
- poj 3187 Backward Digit Sums
- POJ-3187-Backward Digit Sums
- poj 3187 : Backward Digit Sums
- poj 3187 Backward Digit Sums
- POJ 3187 Backward Digit Sums
- POJ 3187 Backward Digit Sums
- POJ-3187 Backward Digit Sums
- POJ 3187 Backward Digit Sums
- POJ 3187 Backward Digit Sums
- poj 3187 Backward Digit Sums
- poj 3187 Backward Digit Sums
- POJ 3187 Backward Digit Sums
- Backward Digit Sums(POJ-3187)
- OI比赛注意
- view类控件
- C语言堆栈入门——堆和栈的区别
- [StoryToolKit]最初的启程
- JQuery练习——仿京东商城多条件筛选
- POJ 3187 Backward Digit Sums
- 在Mac OS X中配置Apache + PHP + MySQL
- POJ 3398 Perfect Service
- 现代数据库管理学习笔记一 数据库管理语境
- 安装 Mplayer SMplayer 视频播放器的最好的方法(ubuntu使用之五)---...
- Serial UART information
- POJ 3438 Look and Say
- ubuntu中文输入法配置及简单显卡驱动安装
- Android开发之旅: Intents和Intent Filters(理论部分)