poj-3187-Backward Digit Sums
来源:互联网 发布:直播特效声音软件 编辑:程序博客网 时间:2024/06/18 12:19
题意:O-
思路:直接dfs回溯,我第一次直接过了样例,但是wa了。我很是不解,试了多组简单数据都正确,后面请教了学长才发现错误所在。
只能说我RP太好,样例总是能过。
代码附上:
#include <cstdio>#include <cstring>#include <cctype>#include <iostream>#include <queue>#include <cmath>#include <algorithm>#define FIN freopen("input.txt","r",stdin)using namespace std;typedef long long ll;typedef pair<int,int>P;const int MAX = 30;const int INF=0x3f3f3f3f;int n,flag,k;int vis[MAX],rec[MAX],ans[MAX];int calc(int la){ //get到小细节 memcpy(rec,ans,sizeof(ans)); //这个就是错误所在,之前没加一直wa,后面发现rec计算一次之后就会全变,但是样例不知怎么没影响 while(la>1){ for(int i=0;i<la-1;i++){ rec[i]=rec[i]+rec[i+1]; } la--; } return rec[0];}void dfs(int cnt){ if(cnt==n&&calc(n)==k){ for(int i=0;i<n;i++) printf("%d%c",ans[i],i==n-1?'\n':' '); flag=1; return ; } else if(cnt<n) for(int i=1;i<=n;i++){ if(!vis[i]) { vis[i]=1; rec[cnt]=i; ans[cnt]=i; dfs(cnt+1); if(flag) return ; vis[i]=0; } }}int main(){ //FIN; while(~scanf("%d%d",&n,&k)){ memset(vis,0,sizeof(vis)); flag=0; dfs(0); } return 0;}
0 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)
- Java并发之线程间的通信Condition
- ehcache,redis,db的性能、一致性比较
- 【Android UI】音频条形图
- Stopping ADB server failed(code -1)
- LeetCode - Reverse String
- poj-3187-Backward Digit Sums
- UVA - 494 Kindergarten Counting Game
- Jekyll + Github page 搭建自己免费的博客网站
- HDOJ(HDU) 1994 利息计算(简单题目)
- c#与Java跨语言socket传输float
- strictfp关键字
- Android--WindowManager.LayoutParams(上)
- SQLite数据库实用的封装
- 算法训练 装箱问题