hdu 3344 Kakuro Extension Extension

Kakuro Extension Extension

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 468    Accepted Submission(s): 240

Problem Description

You know ,I‘m a lazy guy and write problem description is a very very boring thing.So , I would not repeat the rule of Kakuro again , Please look at this.But
things are different again,contray to the problem above,this time you should work out the input file according to the output file.

Input

The first line of the inputs is T, which stands for the number of test cases you need to solve.

Then T case follow:

Each test case starts with a line contains two numbers N,M (2<=N,M<=100)and then N lines follow, each line contains M columns, either ‘_’ or 1~9. You can assume that the first column of the first line is ’_’.

Output

Output N lines, each line contains M parts, each part contains 7 letters. The m parts are seperated by spaces.Output a blank line after each case.

Sample Input

2
6 6
_ _ _ _ _ _
_ _ 5 8 9 _
_ 7 6 9 8 4
_ 6 8 _ 7 6
_ 9 2 7 4 _
_ _ 7 9 _ _
5 8
_ _ _ _ _ _ _ _
_ 1 9 9 1 1 8 6
_ _ 1 7 7 9 1 9
_ 1 3 9 9 9 3 9
_ 6 7 2 4 9 2 _

Sample Output

XXXXXXX XXXXXXX 028\XXX 017\XXX 028\XXX XXXXXXX
XXXXXXX 022\022 ....... ....... ....... 010\XXX
XXX\034 ....... ....... ....... ....... .......
XXX\014 ....... ....... 016\013 ....... .......
XXX\022 ....... ....... ....... ....... XXXXXXX
XXXXXXX XXX\016 ....... ....... XXXXXXX XXXXXXX

XXXXXXX 001\XXX 020\XXX 027\XXX 021\XXX 028\XXX 014\XXX 024\XXX
XXX\035 ....... ....... ....... ....... ....... ....... .......
XXXXXXX 007\034 ....... ....... ....... ....... ....... .......
XXX\043 ....... ....... ....... ....... ....... ....... .......
XXX\030 ....... ....... ....... ....... ....... ....... XXXXXXX
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>

using namespace std;

struct node {
    int r;
    int d;
    bool ok;
} a[111][111];

int b[111][111];

int n,m;
int num(int x) {
    if(x==0)return 1;
    int ans=0;
    while(x)
        ans++,x/=10;
    return 3-ans;
}

int main() {
    int t;
    cin>>t;
    while(t--) {
        char c;
        scanf("%d%d",&n,&m);
        memset(a,0,sizeof a);
        memset(b,0,sizeof b);
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=m; j++) {
                scanf(" %c",&c);
                if(c=='_') {
                    a[i][j].ok=1;
                } else {
                    b[i][j]=c-'0';
                }
            }
        }
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=m; j++) {

                if(a[i][j].ok) {
                    for(int k=j+1; k<=m; k++) {
                        if(a[i][k].ok)break;
                        a[i][j].r+=b[i][k];
                    }
                    for(int k=i+1; k<=n; k++) {
                        if(a[k][j].ok)break;
                        a[i][j].d+=b[k][j];
                    }
                }
            }
        }
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=m; j++) {
                if(a[i][j].ok) {
                    if(a[i][j].d) {
                        int h=num(a[i][j].d);
                        for(int i=0; i<h; i++)
                            printf("0");
                        printf("%d",a[i][j].d);
                    } else
                        printf("XXX");
                    if(a[i][j].r==0&&a[i][j].d==0) {
                        printf("XXXX");
                    } else if(a[i][j].d&&a[i][j].r==0)
                        printf("\\XXX");
                    else{
                              printf("\\");
                        int h=num(a[i][j].r);
                        for(int i=0; i<h; i++)
                            printf("0");
                        printf("%d",a[i][j].r);
                    }
                } else if(b[i][j])
                    printf(".......");
                if(j!=m)printf(" ");
                else    printf("\n");
            }
        }
          printf("\n");
    }
    return 0;
}
时间: 2024-10-30 14:29:27

hdu 3344 Kakuro Extension Extension的相关文章

hdu 3338 Kakuro Extension(最大流)

hdu 3338 Kakuro Extension Description If you solved problem like this, forget it.Because you need to use a completely different algorithm to solve the following one. Kakuro puzzle is played on a grid of "black" and "white" cells. Apart

HDU 3338 Kakuro Extension(网络流)

HDU 3338 Kakuro Extension 题目链接 题意:完成如图的游戏,填充数字1-9 思路:网络流的行列模型,把每行每列连续的一段拆分出来建图即可,然后题目有限制一个下限1,所以 每行每列的容量减去相应的数字,然后建图建容量8就好,这样就默认原来容量已经有1了 代码: #include <cstdio> #include <cstring> #include <queue> #include <algorithm> using namespac

HDU 3338 Kakuro Extension

网络最大流 TLE了两天的题目.80次Submit才AC,发现是刘汝佳白书的Dinic代码还可以优化.....瞬间无语..... #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<vector> #include<queue> #include<algorithm> using namespace std; const

HDU - 3338 Kakuro Extension(最大流)

题目大意:看一下图基本就知道了 解题思路:难点是构图.. 设置一个超级源点和所有的行的和相连,容量为该行的和 - 该行和由几个数相加得到 设置一个超级汇点,和所有列的和相连,容量为该列的和 - 该列和由几个数相加得到 接着就是空白部分和 "行和"和 "列和"的关系了 空白连向该行的行和,权值为8 空白连向该列的列和,权值也为8 为什么为8,而不是9,因为流量也可能为0,但是0是不能填的,所以将容量设为8,最后取值的时候加1即可 #include <cstdio

iOS10通知及通知拓展Extension使用详解(附Demo)

1.1-iOS10拓展简介 1.2-iOS10通知使用 1.3-iOS10通知拓展Extension使用 1.4-效果演示 如果对开发有兴趣的可以来黑马学习iOS开发:黑马程序员 源代码下载地址:代码下载 1.1-iOS10拓展简介 iOS10系统最大的一个亮点就是增加了系统应用的拓展功能Extension Extension功能可以理解为自定义系统界面 本小节我们就以自定义系统通知界面来学习一下Extension的使用 其他功能的Extension我们不可能逐一讲解,希望大家能够在理解的基础上

基本语法 protocols Category extension

转:http://blog.csdn.net/wangeen/article/details/16989529 protocol   本质就是一系列的method的声明,他并不像class是必须的选项,根据自己的设计模式来选择性的使用. protocol协议时为了补充Objective-C 只能单继承的缺陷而增加的一个新功能.Objective-C重所有的方法都是虚方法,所以在oc重也就没有关键字 virtual一说,有了协议可以补充 Objective-C单继承的缺陷,协议并不是一个真正的类,

Chromium扩展(Extension)通信机制分析

Chromium的Extension由Page和Content Script组成.如果将Extension看作是一个App,那么Page和Content Script就是Extension的Module.既然是Module,就避免不了需要相互通信.也正是由于相互通信,使得它们形成一个完整的App.本文接下来就分析Extension的Page之间以及Page与Content Script之间的通信机制. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 从前面

Chromium扩展(Extension)的Content Script加载过程分析

Chromium的Extension由Page和Content Script组成.Page有UI和JS,它们加载在自己的Extension Process中渲染和执行.Content Script只有JS,这些JS是注入在宿主网页中执行的.Content Script可以访问宿主网页的DOM Tree,从而可以增强宿主网页的功能.本文接下来分析Content Script注入到宿主网页执行的过程. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 我们可以在

Chromium扩展(Extension)的页面(Page)加载过程分析

Chromium的Extension Page其实就是网页,因此它们的加载过程与普通网页相同.常见的Extension Page有Background Page和Popup Page.其中,Background Page在浏览器窗口初始化完成后自动加载,之后运行在后台中.Popup Page在用户点击地址栏右边的按钮时加载,并且显示在弹窗中.本文接下来就分析Extension Page的加载过程. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! Exten